python基础-三分钟搞定面试官爱问的【文件操作】
python中的文件的操作
一、使用python读写文本文件
使用Python来读或者写文本需要用到'open'这个关键字,它的作用是打开一个文件并创建一个文件对象。
open语法结构:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
open参数说明:
使用python打开文件有两种写法。
方法一:
f=open(‘文件路径’,‘文件操作方式’,encoding=‘utf-8’)
对文件进行操作
f.close()
方法二:
with open(‘文件路径’,‘文件操作方式’,encoding=‘utf-8’) as f :
对文件进行操作
open
注解:Python不依赖于底层操作系统的文本文件概念;所有处理都由Python本身完成,因此与平台无关。
1.使用python读文本文件
使用python打开一个文件,首先要保证文件是存在的。在读文件时,文件的操作方式这个参数可以省略, 也可以写成‘r’,即read的首字母,这是一个默认参数。
文件路径可以是绝对路径,也可以是相对路径,如果是绝对路径应,linux'和Mac中不能直接使用“~”标识家目录(/home)。因为Python不认识'~'符号,如果非要使用这个符号,需要使用Python中的os模块代码如下。
import os
real_path=os.path.expanduser('~/project/……') # 加自己的文件
# 在windows系统使用路径时,可以使用/来代替 \
#或者可以使用 \\ 来代替 \
#或者也可以使用原始字符串
相对路径是文本文件相对于现在工作路径而言的路径并,不总是相对于当前运行的Python文件路径。
encoding:
这个参数可以在打开文件时将文件转化为你指定的格式,从而避免乱码现象出现,这个参数只有在Python3中cai有,python2 中使用会报错。如果文件是在windows中创建的,并且使用utf-8文件打开出现乱码,可以将文件的编码格式调成GBK格式。
读取文件示例:
file_name = r'demo.txt' #demo.txt文件和python运行程序文件在一个文件夹
file_obj = open(file_name) # 打开 file_name 对应的文件
print(file_obj)
2.使用python写文本文件
使用python写文件也需要打开文件
with open('new.txt',mode='w',encoding='utf-8') as f :
f.write('嘻嘻哈哈,这是我写入的文件内容')
f.writelines(['这是我的第一句话','这是我的第二句话'])
二、使用python读写二进制文件
以二进制模式打开的文件(包括 mode 参数中的 ‘b’ )返回的内容为 bytes对象,不进行任何解码。在文本模式下(默认情况下,或者在 *mode* 参数中包含
’t’` )时,文件内容返回为 str ,首先使用指定的 encoding (如果给定)或者使用平台默认的的字节编码解码。
with open(file_name , 'rb') as file_obj:
# 读取文本文件时,size是以字符为单位的
# 读取二进制文件时,size是以字节为单位
print(file_obj.read(100))
三、使用python读写CSV文件
CSV文件可以使用Excel或者Number打开,得到可读性很强的表格。
python自带操作csv模块,使用这个模块可以将csv文件的内容转换成python的字典,从而方便使用。
1.使用python读CSV文件
import csv
with open('1 .csv','r',encoding='utf-8') as f :
reader =csv.DictReader(f)
for row in reader :
print(row)
#1.csv文件和程文件在一个文件夹,
运行结果:
2.使用python写CSV文件
python可以把一个字典写成csv文件,或者把一包含字典的列表写成CSV文件,写入是列名要和字典的key一一对应,
python写csv文件需要使用到csv.DictReiter()这个类。它接受两个参数:第一个参数是文件对象F;第二个参数是为fiednames,值为字典的key列表。
写入csv文件的列名称:
writer.writeheader()
将包含字典的列表全部写到csv中:
writer:writerows(包含字典的列表)
写入单个字典:
writer:writerow(字典)
import csv
# with open('result.csv', encoding='utf-8') as f:
# reader = [x for x in csv.DictReader(f)]
#
# for row in reader:
# username = row['username']
# content = row['content']
# reply_time = row['reply_time']
# print('用户名:{}, 回复内容:{}'.format(username, content))
data = [{'name': 'kingname', 'age': 24, 'salary': 99999},
{'name': 'meiji', 'age': 20, 'salary': 100},
{'name': '小明', 'age': 30, 'salary': 'N/A'}]
with open('new.csv', 'w', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['name', 'age', 'salary'])
writer.writeheader()
writer.writerows(data)
writer.writerow({'name': '超人', 'age': 999, 'salary': 0})
程序运行后会创建一个csv文件,和程序文件在同一个目录下面。
四、python中关于文件的其他操作
import os
from pprint import pprint
# os.listdir() 获取指定目录的目录结构
# 需要一个路径作为参数,会获取到该路径下的目录结构,默认路径为 . 当前目录
# 该方法会返回一个列表,目录中的每一个文件(夹)的名字都是列表中的一个元素
r = os.listdir()
# os.getcwd() 获取当前所在的目录
r = os.getcwd()
# os.chdir() 切换当前所在的目录 作用相当于 cd
# os.chdir('c:/')
# r = os.getcwd()
# 创建目录
# os.mkdir("aaa") # 在当前目录下创建一个名字为 aaa 的目录
# 删除目录
# os.rmdir('abc')
# open('aa.txt','w')
# 删除文件
# os.remove('aa.txt')
# os.rename('旧名字','新名字') 可以对一个文件进行重命名,也可以用来移动一个文件
# os.rename('aa.txt','bb.txt')
os.rename('bb.txt','c:/users/lilichao/desktop/bb.txt')
pprint(r)