文本文件
文本文件打开与关闭
方式一
f = open('文件路径', '文件操作方式', encoding='utf-8')
对文件进行操作
f.close()
方式二
使用Python的上下文管理器:
with open('文件路径', '文件操作方式', encoding='utf-8') as f:
对文件进行操作
这里有一个参数“encoding”,它可以在打开文件的时候将文件转换为UTF-8编码格式,从而避免乱码的出现。这个参数只有Python 3有,在Python 2中使用这个参数会报错。如果文件是在Windows中创建的,并且使用UTF-8打开文件出现了乱码,可以把编码格式改为GBK。
文件常见操作方式有 读(r) 写(w) ,默认以只读的方式打开
文件操作方式
w--读写
with open('文件路径', 'w', encoding='utf-8') as f:
对文件进行操作
r--只读
with open('文件路径', 'r', encoding='utf-8') as f:
对文件进行操作
a--追加
with open('文件路径', 'a', encoding='utf-8') as f:
对文件进行操作
对比:
第1种方式需要手动关闭文件,但是在程序开发中经常会出现忘记关闭文件的情况。第2种方法不需要手动关闭文件,只要代码退出了缩进,Python就会自动关闭文件。
文本文件读操作
f.readlines()
按行读取文件内容
f.read()
直接将文件内容用一个字符串返回
文本文件写操作
f.write()
参数为一个字符串,直接将一大段字符串写入到文本中
f.writelines()
参数为一个列表,把列表里面的所有字符串写入到文本中
注意事项
写列表的时候,Python写到文本中的文字是不会自动换行的,需要人工输入换行符才可以
CSV文件操作
读操作
CSV文件本质上是文本文件,所以操作csv文件需要先以文本文件方式打开,再将文件对象传递给CSV模块
eg:
import csv
with open('result.csv', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
结果:
for循环得到的row是OrderedDict(有序字典)
如果想在文件关闭后读取内容,只需要借助列表推导式将内容存储在一个列表中即可
import csv
with open('result.csv',encoding='utf-8')as f:
reader [x for x in csv.DictReader(f)]
for row in reader:
#对列表数据的操作
写操作
根据需要写入的数据类型和难易程度选择以下两种方式:
准备字典类型的数据,包含字典的列表也可以
import csv
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}) #写入一行
直接以列表嵌套的方式插入数据,示例:
import csv
data = [['kingname', 24, 99999],
['meiji', 20, 100],
[ '小明', 30, 'N/A']]
with open('new.csv','w',encoding='utf-8')as f:
writer = csv.writer(f)
#写入列名
writer.writerow(['name','age','salary'])
#写入数据
writer.writerows(data) #多行写入