python的文件操作还是比较简单的基本分为三步:打开,读写,关闭
文件打开
f=open('db','r') 打开 f.read() 读 f.close() 关闭
为了避免程序员忘记最后一步关闭,优雅的python使用了以下语句:
with open('db','r') as f,open('db2','r') as f2: opration...
当然要记得冒号和缩进啦。。
文件操作
文件操作分为5个基本模式:
# f = open('db', 'r') # 只读 # f = open('db', 'w') # 只写,先清空原文件 # f = open('db', 'x') # 文件存在,报错;不存在,创建并只写,用的不多 # f = open('db', 'a') # 追加
还有一个+的模式,但要与基本模式组合使用
r+ 读写 w+ 写读,先清空,后写入,再读取 a+ 追加写入,永远是文件末尾追加
还有一个b,b是以二进制打开,但不能加encoding参数
# f = open('db', 'rb') #以二进制打开,不能加encoding参数,
一般open()参数中,需要加(操作对象,操作模式,encoding编码)
操作时需要注意一定,二进制打开不需要设定enconding,但write写入中文时,需要先将中文反转为二进制:
f=open('db','ab') ##二进制打开就不需要写编码了 f.write(bytes('李杰',encoding='utf-8')) #写入时要反转为二进制
f.write() 对文件进行写入操作。
操作文件
read() 无参数,全部读取;有参数:b,按字节读取,无b按字符读取
readlines() 将文本每一行读取,并转为列表
readline 读每一行
f.tell() 显示当前指针所在的位置
f.seek(10) 移动指针到目标位置,使用seek()移动指针后,写入文件都后直接覆盖后面的内容,并非插入
f.fileno() 显示文件描述符
f.flush() 将缓冲区的文件强制写硬盘
f.readable() 判断是否可读
f.truncate() 截取数据,使用seek()移动指针,清空指针后面的内容,只保留前面的内容
f.write() 写数据,如果open中有b,按字节,如果无b,按字符
f=open('db','r+') # print(f.read()) print(()) print(f.tell()) f.seek(f.tell()) print(f.tell()) f.write('成') #直接覆盖 print(f.read())
栗子:
f = open("db", 'ab') f.write(bytes("李杰", encoding="utf-8")) f.close() f = open("db", 'r+', encoding="utf-8") # f.fileno() # 如果打开模式无 b,则read,按照字符读取 data = f.read(1) # tell当前指针所在的位置(字节) print(f.tell()) # 调整当前指着你的位置(字节) f.seek(f.tell()) # 当前指针位置开始向覆盖 f.write("888") f.close()