9. 文件操作
1. 文件的两种打开方式
方式一:打开后复制给句柄,句柄操作文件
句柄 = oopen(文件路径,操作模式,编码格式)
其中操作模式有三种:
r 只读模式 只能读不能写
w 只写模式 只写不能读
a 只追加模式 文件数据末尾添加内容
方式二:使用with关键字,自动打开和自动关闭文件
2. 文件的读写方式
2.1 r 只读模式
只能读不能写
文件不存在时会报错
with open('a.txt', 'r', encoding='utf-8') as f:
data = f.read()
2.2 w 只写模式
只能写不能读
文件不存在时会自动创建一个文件
w模式又称覆盖写模式,每一次写入数据时都将文件原本的内容清空,再写入新的数据
with open('c.txt', 'w', encoding='utf-8') as f: f.write('Lionel Messi')
2.3 a 只追加模式
如果文件不存在则新建文件并写入数据
文件数据末尾添加新的数据
with open('d.txt', 'a', encoding='utf-8') as f:
f.write('Neymar')
3. 文件的操作方式
3.1 + 模式
让原本的模式扩展出新的模式
r+ 既能读又能写 这种模式下的写是覆盖写
w+ 既能写又能读
不建议采用 + 模式,对于一个文件来说要么就是向其中写入数据,要么就是从其中读取数据
3.2 b模式
二进制模式 可以操作任意类型的文件
r rb b不可省略
w wb b不可省略
a ab b不可省略
1. 该模式可以操作任意类型的文件
2. 该模式一定不能指定encoding参数
3. 该模式读写都是以byte类型(二进制)为最小单位
将以上读取到的二进制数据写入到一个新的文件
3.3 文件读写代码举例
# 先写入一个列表
# num_list = [1, 2, 3]
# write() argument must be str, not list
# with open("1.text", "w", encoding="utf-8") as fp:
# fp.write(str(num_list))
# 再读取出来
# with open("1.text", "r", encoding="utf-8") as fp:
# data = fp.read()
# print(data, type(data)) # <class 'str'>
# with open("2.text","a",encoding="utf-8") as fp:
# fp.write("dream|521|666" + "\n")
'''
user_data = {}
with open("2.text", "r", encoding="utf-8") as fp:
data = fp.read()
for i in data.split():
username, password, hobby = i.split("|")
user_data[username] = {
"username": username,
"password": password,
"hobby": hobby
}
print(user_data)
'''
4. 文件操作的内置方法
4.1 r模式的内置方法
f.read() 一次将内容全部读取出来
f.readline() 只读取一行的数据
f.readlines() 读取所有数据,但是每一行数据是列表中的一个元素
for i in f: 句柄可以被遍历,遍历得到的每一个元素是行
f.readable() 判断当前句柄对象是否可读
4.2 w模式的内置方法
f.write() 一次将所有内容全部写入
f.writelines(列表) 将列表中的每一个元素首尾拼接后一次写入
f.writeable() 判断当前句柄对象是否可写
在没有退出with语句之前,连续write是可以持续写入数据的
5. 控制文件内指针移动
(1)前言
(2)read的参数
read里面的数字可以控制当前读取内容的字符个数,并且从头开始读
数字默认是-1,从头读到尾
(3)seek移动指针
seek(offset,whence)
offset移动几个几个字节
whence移动模式:
0:默认的模式 按照文件开头作为参照,向后移动指定字节数 支持文本和二进制
1:按照当前所在位置作为参照,向后移动指定字节数 只支持二进制
2:按照文件末尾作为参照,向后移动指定字节数 只支持二进制
1模式只能用在二进制数据上,文本数据不支持相对移动
控制光标移动到指定位置的时候写入数据,是从当前字节位置覆盖写入内容
一个中文字符占3个字节,如果写入的时候恰好是中文并且写入得不够3个字节就会导致乱码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」