Python(6)文件的开闭读写
一、文件的打开与关闭 、
1.手动开闭
file = open('文件路径',"w")
file.close()#写入东西最好关闭,不然信息异常
2.模式
| r | 只读,默认 | 文件必存在 |
|---|---|---|
| rb | 二进制读 | |
| w | 写入 | 文件可以不存在。如果没有文件,新建;如果有文件,要清空再写入 |
| wb | 二进制写 | |
| a | 附加写 | 不可读,可以创建文件 |
| ab | 二进制附加写 | |
| a+ | 写读 | 读不到内容,因为文件指针默认在最后一行,可用seek移动文件指针位置 |
3.自动开闭
with open('文件路径',"r") as f:
f.read()
4.异常(判断文件是否存在)
try:
open(filename,mode)
except FileNotFoundError:
print('')
5.判断文件存在
import os
if not os.path.exist('text.txt'):
print('文件不存在')
二、文本文件的读写
方法:read,readline,tell,seek,write,writeline
try:
with open("d:\\grade.txt",'w') as f:
f.write('你好\n嘿嘿\n')
L1=['男士\n','女士\n']#列表换行的方式
f.writelines(L1)
except:
print('文件创建失败')
三、二进制文本的读写
1.使用struct读写
将一系列不同类型的数据封装成一段字节流,或者相反。
- 中文要加ignore防止乱码
- 非字符串不需要编码
2.使用pickle序列化
含义:将任意python对象转化为一系列的字节存储到文件中。反序列化恰好相反
import pickle
dic = {'J':[32,'nan','BI'],'S':[22,'nv','BA']}
L = ['a','b']
with open(filename,"wb")as f:
pickle.dump(dic,f)
pickle.dump(L,f)
with open(filename,"rb") as f:
dict = pickle.load(f)
L = pickle.load(f)
print(dict,L)
- 第一次dump的数据对应第一次load的数据
- 序列化对象
基本类型:布尔型、整型、浮点型、复数型等
对象:字符串、列表、元组、字典和集合等
其他:函数、类、类的实例