Python 文件 I/O:安全地读写文件
了解如何在 Python 中读取和写入文件。掌握 open()、read()、write() 和上下文管理器,以安全地处理文件操作,而不会造成资源泄漏。
概述
文件输入/输出 (I/O) 是一项基本功能,允许 Python 程序与计算机的持久存储进行交互。无论您是构建简单的记录器、读取配置文件还是处理海量数据数组,您的程序都需要一种可靠的方式来打开、读取、写入和关闭磁盘上的文件。 Python 提供了干净的内置函数,使文件系统交互变得简单且跨平台。
Python 中文件访问的主要工具是内置的“open()”函数。该函数接受文件路径和模式字符串。模式决定如何访问文件:“r”表示读取,“w”表示写入(覆盖文件),“a”表示将内容附加到末尾,“b”表示二进制模式(对于图像或序列化数据有用)。至关重要的是,每当您打开文件时,它都会消耗操作系统句柄。如果无法关闭文件,可能会导致内存泄漏或文件锁定问题。
为了保证文件始终正确关闭,Python 开发人员使用“with”语句来实现上下文管理器。当使用 with open(...) as file: 时,一旦代码块退出,Python 就会自动关闭文件句柄,即使内部发生意外异常。可以使用“for line in file:”逐行读取数据,也可以通过“.read()”、“.readline()”或“.readlines()”一次性读取数据。写入文本通过“.write()”或“.writelines()”处理,从而实现流畅、安全、高效的文件操作。
代码和执行输出
将问候语写入临时文本文件并使用安全上下文管理器逐行读回。
filename = "sample.txt"
# Writing to a file
with open(filename, "w") as file:
file.write("Hello, Python coder!\n")
file.write("This is a line in a file.\n")
file.write("File I/O is simple.\n")
print("File written successfully.\n--- Reading File ---")
# Reading from a file line by line
with open(filename, "r") as file:
for index, line in enumerate(file, 1):
print(f"Line {index}: {line.strip()}")File written successfully.
--- Reading File ---
Line 1: Hello, Python coder!
Line 2: This is a line in a file.
Line 3: File I/O is simple.逐步实施
- 记录错误和程序输出
- 读取配置文件(例如 .env 或 config.txt)
- 保存用户报告或导出的分析摘要
常见问题解答
写入模式和追加模式有什么区别?
写入模式('w')将文件截断为零长度,在写入之前删除任何现有内容。追加模式('a')将光标置于末尾,添加新文本而不删除现有内容。
为什么要使用 with 语句?
with 语句充当上下文管理器,确保文件自动关闭,从而防止内存泄漏和锁定文件错误。
相关主题
了解如何用 Python 编写自定义上下文管理器。掌握 contextmanager 装饰器和 __enter__/__exit__ 方法以确保资源安全。
Python JSON 解析:序列化和反序列化了解如何在 Python 中读取、写入和解析 JSON 数据。掌握 json.loads、json.dumps 和自定义 JSON 编码器/解码器。
Python CSV:读取和写入电子表格了解如何在 Python 中处理 CSV 数据。掌握 csv.reader、csv.writer 和 DictReader/DictWriter 以实现高效的表格解析。
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。