文件的读取与写入

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将学习如何在 Python 中读取和写入文件。我们将从简单的示例开始,逐步增加代码的复杂性。

读取和写入文件是任何编程语言中的一项基本技能。它允许我们以持久化的方式存储和操作数据,并且是许多应用程序的关键构建块。在 Python 中,读取和写入文件非常简单且易于学习。我们将首先学习如何读取文件,然后再学习如何写入文件。

成就

  • 读取和写入文件

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/FileHandlingGroup -.-> python/file_opening_closing("Opening and Closing Files") python/FileHandlingGroup -.-> python/file_reading_writing("Reading and Writing Files") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/FileHandlingGroup -.-> python/with_statement("Using with Statement") python/AdvancedTopicsGroup -.-> python/context_managers("Context Managers") subgraph Lab Skills python/file_opening_closing -.-> lab-92{{"文件的读取与写入"}} python/file_reading_writing -.-> lab-92{{"文件的读取与写入"}} python/file_operations -.-> lab-92{{"文件的读取与写入"}} python/with_statement -.-> lab-92{{"文件的读取与写入"}} python/context_managers -.-> lab-92{{"文件的读取与写入"}} end

读取文件

在 Python 中读取文件时,我们使用 open 函数,该函数会返回一个文件对象。然后,我们可以使用文件对象的各种方法来读取文件内容。

打开一个新的 Python 解释器会话并输入以下代码:

python3

以下是一个如何打开并读取文本文件的示例:

## 打开文件
f = open('filename.txt', 'r')

## 读取文件内容
contents = f.read()

## 打印内容
print(contents)

## 关闭文件
f.close()

open 函数接受两个参数:文件名和打开文件的模式。在这个例子中,我们使用了 'r' 模式,表示“读取”。这是默认模式,因此我们也可以写成 open('filename.txt')

文件对象的 read 方法将文件内容作为字符串返回。然后我们可以打印内容或以任何方式对其进行操作。

完成文件操作后,关闭文件以释放系统资源非常重要。我们可以使用文件对象的 close 方法来实现这一点。

写入文件

在 Python 中写入文件的过程与读取文件类似。我们使用 open 函数获取文件对象,然后使用 write 方法将内容写入文件。

以下是一个如何打开文件进行写入并向其中写入一些文本的示例:

## 打开文件
f = open('filename.txt', 'w')

## 向文件中写入一些文本
f.write('Hello, world!\nPython')

## 关闭文件
f.close()

与读取文件时一样,我们使用 open 函数获取文件对象。这次,我们使用 'w' 模式,表示“写入”。如果文件不存在,此模式将创建文件;如果文件已存在,则会覆盖文件内容。

write 方法接受一个字符串作为参数并将其写入文件。与读取文件时一样,完成文件操作后关闭文件非常重要。

处理文件内容

现在我们已经知道如何读取和写入文件,接下来让我们看一些更高级的处理文件内容的示例。

逐行读取文件

有时,我们可能希望逐行读取文件,而不是一次性读取整个文件内容。为此,我们可以使用文件对象的 readline 方法。以下是一个逐行读取文件的示例:

## 打开文件
f = open('filename.txt', 'r')

## 逐行读取并打印
for line in f:
    print(line)

## 关闭文件
f.close()

for 循环会遍历文件的每一行。在每次迭代中,它会读取并打印当前行。当没有更多行可读时,循环结束,文件被关闭。

逐行写入文件

要逐行写入文件,我们可以使用文件对象的 writelines 方法。该方法接受一个字符串列表作为参数,并将它们写入文件,列表中的每个字符串将成为文件中的单独一行。

以下是一个逐行写入文件的示例:

## 打开文件
f = open('filename.txt', 'w')

## 将多行内容写入文件
lines = ['Line 1', 'Line 2', 'Line 3']
f.writelines(lines)

## 关闭文件
f.close()

追加到文件

要向文件追加内容而不是覆盖它,我们可以在打开文件时使用 'a' 模式。这将以追加模式打开文件,允许我们在文件末尾添加新内容,而不会覆盖现有内容。

以下是一个追加到文件的示例:

## 打开文件
f = open('filename.txt', 'a')

## 向文件追加一些文本
f.write('This is new content')

## 关闭文件
f.close()

with 语句

Python 中的 with 语句用于将代码块的执行与上下文管理器定义的方法包装在一起。上下文管理器是一个定义了 __enter____exit__ 方法的对象。with 语句会为其后的缩进代码块创建一个临时的上下文管理器。

open 函数是 Python 的内置函数,它返回一个文件对象,表示一个打开的文件。在处理文件时,完成操作后关闭文件以释放系统资源非常重要。with 语句使文件操作更加方便,因为它会在代码块退出时自动关闭文件,即使发生异常也是如此。

以下是一个使用 with 语句打开并读取文件的示例:

with open('filename.txt', 'r') as f:
    contents = f.read()
    print(contents)

在这个示例中,open 函数在 with 语句中被调用,以读取模式打开文件 'filename.txt'。文件对象随后被传递给 as 子句,并命名为 fwith 语句后的缩进代码块可以使用文件对象 f 来读取文件内容。

当代码块退出时,文件会被上下文管理器自动关闭,即使发生异常也是如此。这意味着我们不需要显式调用文件对象的 close 方法。

推荐使用 with 语句来管理文件对象的生命周期,而不是手动打开和关闭文件,因为它更加简洁,并确保文件始终会被正确关闭,即使发生异常也是如此。

总结

在本实验中,我们学习了如何在 Python 中读取和写入文件。我们了解了如何打开和关闭文件、读取和写入文件内容,以及以更高级的方式处理文件内容。我们还学习了如何在打开文件时使用不同的模式来控制文件的访问方式。

通过本实验,你应该能够自信地在 Python 中读取和写入文件。