文件操作
各种操作数据方式,与光标起始位置的关系
文件的读
r r+ rb r+b
每种模式下有5种不同读文件的方法
r
全部读取
f=open('ghl.txt',encoding='utf-8')默认read模式 print(f.read()) f.close
read(n)
r模式 n带表字节 b模式 n代表字符 f=open('ghl.txt',encoding='utf-8') print(f.read(n)) f.close() readline 按行读 读一行,可以用for循环全部读取 f=open('ghl.txt',encoding='utf-8') print(f.readline()) f.close() 循环读取1 f=open('ghl.txt',encoding='utf-8') for line in range(0,4) print(f.readline()) f.close() 循环读取2 f=open('ghl.txt',encoding='utf-8') for line in f: print(line) f.close() readlines 返回一个list,列表的每个元素是原文件的每一行 f=open('ghl.txt',encoding='utf-8') print(f.readlines()) f.close() rb以字节形式读取 非文字类文件 f=open('ghl.txt',mode='rb') 非文字不能用utf-8!!! print(f.read()) f.close() r+先读后写 f=open('ghl.txt',encoding='utf-8') print(f.read()) 读完光标在末尾 f.write('写入内容‘’) f.close()
文件的写
w w+ wb w+b w 没有文件,就创建文件,写入内容 f=open('ghl',encoding='utf-8') f.write('写入内容') f.close() 如果有文件就先清空后写入 f=open('ghl.txt',encoding='utf-8',mode='w') f.write("I'm a tall man") f.write("I'm a tall man") f.write("I'm a tall man") f.write("I'm a tall man") --- 可以循环写入 for i in range(4) f.write('I'm a tall man') f.close() wb 可以用来复制图片 f=open('图片.png',mode='rb') content=f.read() f.close() f=open('图片2.png',mode='wb') f.write(content) f.close() 文件的追加 a f=open('ghl.txt',encoding='utf-8',mode='a') f.write('追加内容') f.close()
文件常用操作方法
read(3)
1.文件打开方式为文本模式时,代表读取3个字符
2.文件打开方式为b模式时,代表读取3个字节
其余文件内光标移动都是以字节为单位的,如seek,truncate,tell
seek,指定文件中指针位置
f=open('ghl',encoding='utf-8') f.seek(9) print(f.read()) f.close()指定从第9个字节后读取
truncate,截取数据,仅保留之前的数据,多打开文件必须可写,
但不能用w 和 w+ 来打开,因为会直接清空文件,所以truncate要在a a+ 或者r+ 模式下打开(注意光标位置)
f=open('ghl',encoding='utf-8',mode='r+') f.truncate(9) f.close()
tell,获取当前指针位置。
f=open('ghl',encoding='utf-8') print(f.tell()) f.close()
flush,刷新文件内部缓冲区????怎么用
readable文件是否可读
writeable文件是否可写
文件的修改
import os # 调用系统模块 with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: data=read_f.read() #全部读入内存,如果文件很大,会很卡 data=data.replace('alex','SB') #在内存中完成修改 write_f.write(data) #一次性写入新文件 os.remove('a.txt') #删除原文件 os.rename('.a.txt.swap','a.txt') #将新建的文件重命名为原文件
一行一行修改,
import os with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: for line in read_f: line=line.replace('alex','SB') write_f.write(line) os.remove('a.txt') os.rename('.a.txt.swap','a.txt')
清风徐来.水波不兴
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步