在 Python 中读取文件意味着访问并检索文件的内容,无论是文本、二进制数据还是像 CSV 和 JSON 这样的格式。这在现实世界的应用程序中被广泛使用,例如读取配置文件、处理日志或处理数据科学中的数据集。
示例文件:example.txt
> Hello World
> Hello Everyone
基础文件读取
基础文件读取包括打开文件、读取其内容以及正确关闭它以释放系统资源。
步骤:
- 打开文件: open("filename", "mode") 以指定模式(例如,读取模式 "r")打开文件。
- 读取内容: 使用 read()、readline() 或 readlines() 方法。
- 关闭文件: close() 确保释放系统资源。
示例: 这段代码打开一个文件,一次性读取其所有内容,打印出来,然后关闭文件。
Python
CODEBLOCK_0f0ab8ed
输出:
> Hello World
> Hello Everyone
解释: 这段代码以读取模式打开 example.txt,将其所有内容读取到一个字符串中,打印它,然后关闭文件以释放资源。
最佳实践:使用 with 语句
除了手动关闭文件外,我们可以使用 with 语句。它确保在代码块结束时自动关闭文件。
示例: 这段代码打开文件,读取其内容,并在使用后自动关闭它。
Python
CODEBLOCK_05da95dd
输出:
> Hello World
> Hello Everyone
解释: 使用 with open(...),文件会被自动关闭,从而防止资源泄漏。
逐行读取文件
我们可能想要逐行读取文件,这对于一次性读取全部内容不切实际的大文件来说尤其有用。我们可以通过以下两种方法来实现:
- for line in file: 迭代文件中的每一行。
- line.strip(): 删除任何前导或尾随的空白字符,包括换行符。
示例 1: 使用循环逐行读取
这段代码逐行读取每一行,并删除多余的换行符。
Python
CODEBLOCK_85897434
输出:
> Hello World
> Hello Everyone
解释: 此方法每次读取文件的一行,并在删除前导/尾随空白后打印它。
示例 2: 使用 readline()
readline() 方法每次读取一行。我们可以在循环中不断调用它,直到没有剩余行为止。
Python
CODEBLOCK_e2e26f1e
输出:
> Hello World
> Hello Everyone
解释: 此方法每次读取一行,这对于处理非常大的文件非常有用,因为一次性将全部内容加载到内存中效率不高。
读取二进制文件
二进制文件以非文本格式存储数据。这些文件可以包括图像、可执行文件或任何非文本数据。我们使用以下方法来读取二进制文件:
> open("example.bin", "rb"): 以读取二进制模式打开文件 example.bin。
示例: 读取二进制文件
这段代码读取整个二进制文件并打印其原始字节内容。
Python
CODEBLOCK_63c2f2dd
输出:
> b‘Hello World\r
Hello Everyone‘
解释: 这段代码以二进制模式("rb")读取文件,并将其内容作为字节打印出来,这对于处理非文本文件是必要的。
读取文件的特定部分
有时,我们可能只需要读取文件的特定部分,例如前几个字节、特定行或某个范围的行。
示例: 这段代码仅读取文件的前 10 个字符。
Python
CODEBLOCK_f118ac76
输出:
> Hello Worl
解释: 读取有限数量的字符对于在不加载整个文件的情况下快速预览内容非常有用。
读取 CSV 文件
CSV(逗号分隔值)广泛用于存储表格数据。Python 的 csv 模块有助于轻松解析 CSV。在这里,我们不需要外部文件,而是使用 io.StringIO 来模拟一个。
示例:这段代码创建了一个内存中的 CSV 字符串,并逐行读取它。