Python 中的文件处理涉及与计算机上的文件交互以从文件中读取数据或向文件中写入数据。Python 提供了多个内置函数和方法用于创建、打开、读取、写入和关闭文件。本教程通过示例介绍了 Python 中文件处理的基础知识。
在 Python 中打开文件
要执行任何文件操作,第一步是打开文件。Python 的内置 open()
函数用于以不同的模式(如读取、写入和追加)打开文件。在 Python 中打开文件的语法如下:
file = open("filename", "mode")
其中,filename
是要打开的文件名,而 mode
是打开文件的模式(例如,'r' 表示读取,'w' 表示写入,'a' 表示追加)。
文件打开模式
以下是文件打开的不同模式:
序号 |
模式 |
描述 |
1 |
r |
打开文件仅用于读取。文件指针位于文件的开头。这是默认模式。 |
2 |
rb |
以二进制格式打开文件仅用于读取。文件指针位于文件的开头。这是默认模式。 |
3 |
r+ |
打开文件用于读写。文件指针位于文件的开头。 |
4 |
rb+ |
以二进制格式打开文件用于读写。文件指针位于文件的开头。 |
5 |
w |
打开文件仅用于写入。如果文件存在,则覆盖文件。如果文件不存在,则创建一个新文件用于写入。 |
6 |
b |
以二进制模式打开文件。 |
7 |
t |
以文本模式打开文件(默认)。 |
8 |
+ |
以更新(读写)模式打开文件。 |
9 |
wb |
以二进制格式打开文件仅用于写入。如果文件存在,则覆盖文件。如果文件不存在,则创建一个新文件用于写入。 |
10 |
w+ |
打开文件用于写读。如果文件存在,则覆盖现有文件。如果文件不存在,则创建一个新文件用于读写。 |
11 |
wb+ |
以二进制格式打开文件用于写读。如果文件存在,则覆盖现有文件。如果文件不存在,则创建一个新文件用于读写。 |
12 |
a |
打开文件用于追加。如果文件存在,文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,则创建一个新文件用于写入。 |
13 |
ab |
以二进制格式打开文件用于追加。如果文件存在,文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,则创建一个新文件用于写入。 |
14 |
a+ |
打开文件用于追加和读取。如果文件存在,文件指针位于文件末尾。文件处于追加模式。如果文件不存在,则创建一个新文件用于读写。 |
15 |
ab+ |
以二进制格式打开文件用于追加和读取。如果文件存在,文件指针位于文件末尾。文件处于追加模式。如果文件不存在,则创建一个新文件用于读写。 |
16 |
x |
用于独占创建,如果文件已经存在则失败。 |
一旦打开了一个文件并且你有了一个文件对象,你可以获取与该文件相关的各种信息。
示例 1
在下面的示例中,我们在不同的模式下打开一个文件:
file = open("example.txt", "r")
file = open("example.txt", "w")
file = open("example.txt", "a")
file = open("example.txt", "rb")
示例 2
在这里,我们以二进制写模式("wb")打开一个名为 "foo.txt" 的文件,打印其名称、是否关闭以及打开模式,然后关闭文件:
fo = open("foo.txt", "wb")
print("文件名: ", fo.name)
print("是否关闭: ", fo.closed)
print("打开模式: ", fo.mode)
fo.close()
它将产生以下输出:
文件名: foo.txt
是否关闭: False
打开模式: wb
在 Python 中读取文件
在 Python 中读取文件涉及到以允许读取的模式打开文件,然后使用各种方法从文件中提取数据。Python 提供了多个方法来从文件中读取数据:
-
-
-
readlines
—— 读取所有行并放入一个列表。
为了读取一个文件,你需要以读模式打开它。open()
函数的默认模式是读模式('r'),但最好明确指定它。
示例:使用 read()
方法
在下面的示例中,我们使用 read()
方法将整个文件读取到一个单一的字符串中:
with open("example.txt", "r") as file:
content = file.read()
print(content)
以下是得到的输出:
Hello!!!
Welcome to TutorialsPoint!!!
示例:使用 readline()
方法
在这里,我们使用 readline()
方法一次读取一行,使得逐行读取大文件时更节省内存:
with open("example.txt", "r") as file:
line = file.readline()
while line:
print(line, end='')
line = file.readline()
上面代码的输出如下所示:
Hello!!!
Welcome to TutorialsPoint!!!
示例:使用 readlines()
方法
现在,我们使用 readlines()
方法读取整个文件并将每一行分割成一个列表中的元素:
with open("example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line, end='')
我们得到的输出如下:
Hello!!!
Welcome to TutorialsPoint!!!
在 Python 中向文件写入
在 Python 中向文件写入涉及到以允许写入的模式打开文件,然后使用各种方法向文件中添加内容。
为了向文件写入数据,使用 write()
或 writelines()
方法。当以写模式('w')打开文件时,现有的文件内容会被清除。
示例:使用 write()
方法
在这个示例中,我们使用 write()
方法将传入的字符串写入文件。如果文件是以 'w' 模式打开的,它会覆盖任何现有内容。如果文件是以 'a' 模式打开的,它会在文件末尾追加字符串:
with open("foo.txt", "w") as file:
file.write("Hello, World!")
print("内容添加成功!!")
上面代码的输出如下:
内容添加成功!!
示例:使用 writelines()
方法
在这里,我们使用 writelines()
方法接受一个字符串列表并将每个字符串写入文件。这对于一次写入多行是有用的:
lines = ["第一行\n", "第二行\n", "第三行\n"]
with open("example.txt", "w") as file:
file.writelines(lines)
print("内容添加成功!!")
所得到的结果如下:
内容添加成功!!
在 Python 中关闭文件
我们可以使用 close()
方法在 Python 中关闭文件。关闭文件是在文件处理中的重要步骤,以确保所有由文件使用的资源都被正确释放。在完成操作后关闭文件很重要,以防止数据丢失并释放系统资源。
示例
在这个示例中,我们以写模式打开文件,在文件中写入数据,然后使用 close()
方法关闭文件:
file = open("example.txt", "w")
file.write("这是一个例子。")
file.close()
print("文件已成功关闭!!")
产生的输出如下所示:
文件已成功关闭!!
使用 "with" 语句自动关闭文件
在 Python 中处理文件操作时,使用 with
语句是一种最佳实践,因为它能确保当退出代码块时文件自动关闭,即使发生异常也是如此。
示例
在这个示例中,文件会在 with
块结束时自动关闭,因此不需要显式地调用 close()
方法:
with open("example.txt", "w") as file:
file.write("这是使用 with 语句的一个例子。")
print("文件已成功关闭!!")
上面代码的输出如下:
文件已成功关闭!!
处理关闭文件时的异常
在执行文件操作时,处理潜在的异常是很重要的,以确保你的程序能够优雅地管理错误。
在 Python 中,我们使用 try-finally 块来处理关闭文件时的异常。“finally” 块确保即使在 try 块中发生错误的情况下,文件也会被关闭。
示例
在这个示例中,即使 try 块中发生了错误,文件也会在 finally 块中被关闭:
try:
file = open("example.txt", "w")
file.write("这是一个处理异常的例子。")
finally:
file.close()
print("文件已成功关闭!!")
执行上述代码后,我们会得到如下输出:
文件已成功关闭!!