python的文件操作
📅 2026/7/23 0:06:51
👁️ 阅读次数
📝 编程学习
使用场景
1. 需要读取文本文件
- 一般来说是txt后缀的,但是有没有后缀都可以
- 可以直接用文本编辑器打开,查看内容
2. 需要读取二进制文件
- 需要特定的解析工具,比如:视频,音频,pdf等等
- 用文本编辑器打开,是乱码
文本文件操作的 3 中模式
读(mode= "r")、写(mode= "w")、追加(mode= "a")
读
# 文件/流的操作:1,打开(连上);2,增删改查;3,关闭(断开) f = open(file="./test.txt", mode="r", encoding="utf8") # 读取内容 f.read() # 关闭文件 f.close()# 文件/流的操作:1,打开(连上);2,查;3,关闭(断开) with open("test.txt", "r", encoding="utf8") as f: for line in f: real_line = line.strip() if real_line: print(real_line)写
# 文件/流的操作:1,打开(连上);2,写;3,关闭(断开) with open("test.txt", "w", encoding="utf8") as f: f.write("第一行内容\n") f.write("第二行内容\n")追加
# 文件/流的操作:1,打开(连上);2,追加;3,关闭(断开) with open("test.txt", "a", encoding="utf8") as f: f.write("追加一行\n")读一个文件,写入另外一个新文件
# 读test.txt,过滤空行,写入out.txt with open("test.txt", "r", encoding="utf8") as fr, open("out.txt", "w", encoding="utf8") as fw: for line in fr: s = line.strip() if s: print(s) fw.write(s + "\n")二进制文件操作的4 中模式
rb:只读二进制wb:覆盖写二进制(清空原有)ab:追加二进制(尾部添加)r+b/rb+:可读可写二进制(修改、插入、删除必备,不清空文件)
二进制读写全部操作字节串 bytes,不能直接 str,字符串要encode(),字节要decode()。
覆盖写二进制(清空原有)
# 写入字节,encode字符串转bytes data = "测试二进制内容\n第二行".encode("utf-8") with open("data.bin", "wb") as f: f.write(data)只读二进制
with open("data.bin", "rb") as f: # 一次性读取全部字节 content = f.read() print(content) text = content.decode("utf-8") print(text)追加二进制(尾部添加)
add_data = "\n追加的字节".encode("utf-8") with open("data.bin", "ab") as f: f.write(add_data)可读可写二进制
覆盖修改指定位置内容(二进制文件一般只能覆盖替换指定内容,修改或删除中间内容必须全部读出修改,然后清空文件写入)
关键文件指针函数
f.seek(offset, whence)移动文件指针- whence=0:从头偏移
- whence=1:从当前位置偏移(rb + 下可用)
- whence=2:从文件末尾偏移
f.tell()获取当前指针位置
# 覆盖修改指定位置内容 # data.bin 内容:b'abc123xyz' # 把 123 改成 456(偏移 3 开始,覆盖 3 字节) with open("data.bin", "rb+") as f: f.seek(3, 0) # 指针移到第3个字节 f.write(b"456")大文件分块读取
CHUNK_SIZE = 1024 with open("large.bin", "rb") as f: while chunk := f.read(CHUNK_SIZE): # 逐块处理字节 pass
编程学习
技术分享
实战经验