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的数据
  • 序列化对象
    基本类型:布尔型、整型、浮点型、复数型等
    对象:字符串、列表、元组、字典和集合等
    其他:函数、类、类的实例