1.模式
前面加b,就是以二进制数据进行存取,bytes类型
模式 |
文件存在 |
文件不存在 |
操作 |
文件内容 |
r |
正常打开 |
报错 |
只读 |
只可读不可写。可以用指针调节位置去读。 |
w |
清空文件 |
创建新文件 |
只写 |
文件内容就被清空。可以调节指针位置去写。 |
a |
正常打开 |
创建新文件 |
只写 |
不覆盖原文件内容。只能在末尾追加内容,调节指针无法改变写的位置。 |
r+ |
正常打开 |
报错 |
读写 |
不覆盖原文件内容。指针默认在末尾追加内容,指针在其它位置写操作时,覆盖原文件内容。根据指针位置读文件 |
w+ |
清空文件 |
创建新文件 |
读写 |
打开文件时,内容就被清空。 |
a+ |
正常打开 |
创建新文件 |
读写 |
指针默认在末尾,写文件只能追加内容,根据指针位置读文件。 |
open参数
open(file,mode=‘r’,buffering=-1,encoding=None,errors=None,
newline=None, closefd=True, opener=None)
参数说明
file: 必需,文件路径(相对或者绝对路径)
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf-8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
2.文件的操作
写入
文件对象. write(str)
参数str表示要写入的字符串。若字符串写入成功,write()方法返回本次写入文件的长度。而且write()方法不能自动换行。需要手动的添加“\n”
文件对象. writelines([str,str,str,str])
向文件中写入字符串序列
f=open('test.txt','w')
f.write('我的文件内容'
f.close()
with open('test.txt','w') as f:
f.write('我的文件内容')
读取
read():默认会把文件的所有内容一次性读取到内存,如果文件太大,对内存的占用会非常严重;
readline():可以一次读取一行内容,方法执行后,会把文件指针移动到下一行。
注意:
read( )(参数缺省时)和readlines( ) 方法都可一次读取文件中的全部数据,但这两种操作都不够安全。因为计算机的内存是有限的,若文件较大,read()和readlines()的一次读取便会耗尽系统内存。
为了保证读取安全,通常多次调用read()方法,每次读取size字节的数据。或者使用readline()方法按行读取内容。
f=open('test.txt','r')
data = f.read()
f.close()
print(data)
with open('test.txt','w') as f:
data = f.read()
文件的定位读取
tell()方法:获取文件当前的位置;
seek()方法:设置当前文件读写位置
tell()
f = open('a.txt', 'r', encoding='utf-8')
f.readline()
print(f.tell())
seek(offset, from)
offset: 表示偏移量(字节数),即读写位置需要移动的字节数;
from: 表示从哪里开始偏移,
0 表示从开始位置偏移(默认值)
1 从当前位置偏移
2 文件结尾作为基准进行偏移
获取文件名字
with open('a.txt', 'r', encoding='utf-8') as f:
print(f.name)
获取文件大小
import os
b = os.path.getsize("文件的路径")
with 方法打开处理文件帮我我们做了什么
打开文件在进行读写的时候可能会出现一些异常状况,这时候with方法帮我们实现了finally中f.close。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧