python的文件操作
2026/7/22 23:40:32 网站建设 项目流程

使用场景

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询