Python 文件操作基础指南
在 Python 编程中,文件操作是数据处理、日志记录和配置管理的基础技能。掌握文件的读写、编码处理以及资源管理对于编写健壮的程序至关重要。
Python 文件操作涉及文件的打开、读取、写入和关闭。核心函数为 open,常用方法包括 read、write、close。文件指针控制读取位置,默认指向开头。常见模式有只读 r、写入 w、追加 a 等。处理大文件建议使用 readline 逐行读取以节省内存。编码问题常需指定 UTF-8。最佳实践是使用 with 语句自动管理资源,配合异常处理确保文件安全关闭。

在 Python 编程中,文件操作是数据处理、日志记录和配置管理的基础技能。掌握文件的读写、编码处理以及资源管理对于编写健壮的程序至关重要。
在 Python 中操作文件主要涉及一个核心函数和几个常用方法:
file = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file:文件名或路径(区分大小写)。mode:打开模式(如 'r', 'w', 'a')。encoding:指定编码格式,推荐 'UTF-8'。open 打开文件。read 读取内容。close 关闭文件。file = open("HELLO", encoding="UTF-8")
text = file.read()
print(text)
file.close()
注意:如果忘记关闭文件,会导致系统资源泄露,且可能影响后续对文件的访问。
Windows 默认编码常为 GBK,而 Python 默认或现代编辑器常使用 UTF-8。若不一致会抛出 UnicodeDecodeError。
错误示例:
# 未指定编码可能导致乱码或报错
file = open("HELLO")
修正方案:
显式指定 encoding="UTF-8"。
file = open("HELLO", encoding="UTF-8")
文件指针标记了当前读取的位置。首次打开时通常指向开头。执行 read 后,指针移至末尾。
file = open("HELLO", encoding="UTF-8")
text = file.read()
print(text)
print("+" * 30)
text = file.read() # 此时无法再次读取内容
print(text)
file.close()
offset:偏移量。whence:起始位置(0: 开头,1: 当前位置,2: 结尾)。file = open("HELLO", encoding="UTF-8")
print(file.tell()) # 输出 0
file.seek(5) # 移动到第 5 个字符处
print(file.tell()) # 输出 5
file.close()
open 函数的第二个参数 mode 决定了文件的操作方式。
| 模式 | 说明 |
|---|---|
| r | 只读。文件不存在则报错。指针在开头。 |
| w | 只写。文件存在则清空覆盖。不存在则创建。 |
| a | 追加。指针在结尾。不存在则创建。 |
| r+ | 读写。指针在开头。文件不存在则报错。 |
| w+ | 读写。文件存在则清空覆盖。 |
| a+ | 读写。指针在结尾。 |
| b | 二进制模式(如 'rb', 'wb')。 |
# 写入并覆盖
with open("test.txt", "w", encoding="UTF-8") as f:
f.write("Hello World")
# 追加写入
with open("test.txt", "a", encoding="UTF-8") as f:
f.write("\nAppend Content")
当文件过大时,一次性 read() 会占用大量内存。推荐使用 readline() 或迭代器逐行读取。
file = open("large_file.txt", encoding="UTF-8")
while True:
line = file.readline()
if not line:
break
print(line, end="")
file.close()
使用 with 语句可以自动管理资源,无需手动调用 close(),即使发生异常也能正确关闭文件。
try:
with open("data.txt", "r", encoding="UTF-8") as f:
content = f.read()
except FileNotFoundError:
print("文件未找到")
except Exception as e:
print(f"发生错误:{e}")
encoding 参数。open 函数配合 with 上下文管理器。encoding="UTF-8"。seek 和 tell 进行随机访问。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online