跳转至

Python 笔记 | 文件操作

Python 提供了丰富的内置函数和模块来执行文件操作。这些操作通常包括打开文件、读取文件内容、写入文件内容、以及关闭文件等。以下是一些关于 Python 文件操作的基本介绍:

打开文件

在 Python 中,我们使用 open() 函数来打开文件。这个函数返回一个文件对象,该文件对象提供了许多方法来处理文件。

Python
file = open('filename.txt', 'r')  # 打开文件以读取模式
# 或者
file = open('filename.txt', 'w')  # 打开文件以写入模式,如果文件不存在则创建它
# 或者
file = open('filename.txt', 'a')  # 打开文件以追加模式,如果文件不存在则创建它
# 或者
file = open('filename.txt', 'r+')  # 打开文件进行读写,文件指针放在文件开头
# 或者
file = open('filename.txt', 'w+')  # 打开文件进行读写,如果文件不存在则创建它,文件指针放在文件开头
# 或者
file = open('filename.txt', 'a+')  # 打开文件进行读写,如果文件不存在则创建它,文件指针放在文件末尾

读取文件

一旦我们打开了文件,我们就可以使用文件对象的方法来读取文件内容。

Python
1
2
3
4
5
6
7
8
9
# 读取整个文件
contents = file.read()

# 读取指定数量的字符
contents = file.read(10)

# 逐行读取文件
for line in file:
    print(line, end='')  # 注意,end='' 是为了防止在行尾添加额外的换行符

写入文件

我们可以使用文件对象的 write() 方法来写入文件。

Python
file.write('Hello, World!')

注意,当我们以写入模式('w')或追加模式('a')打开文件时,如果文件已存在,它的内容将被覆盖('w')或在文件末尾追加内容('a')。

关闭文件

完成文件操作后,我们应该使用 close() 方法来关闭文件。这是一个好习惯,因为它可以确保所有的更改都被保存,并释放了文件对象所使用的资源。

Python
file.close()

使用 with 语句

为了更方便地管理文件,Python 提供了一个 with 语句,它可以确保文件在使用后被正确关闭,即使在处理文件时发生异常也是如此。

Python
1
2
3
4
with open('filename.txt', 'r') as file:
    contents = file.read()
    # 在这里处理文件内容...
# 文件在这里会自动关闭

文件路径

当指定文件名时,如果文件位于当前工作目录中,则可以直接使用文件名。否则,你需要提供完整的文件路径(可以是相对路径或绝对路径)。

你说得对,Python 的文件操作确实可以包括指定文件的编码。在读取或写入文件时,我们可能希望指定一个特定的编码方式,比如 UTF-8、GBK 等。在 Python 3 中,open() 函数有一个可选的 encoding 参数,用于指定文件的编码。

以下是如何在打开文件时指定编码的示例:

文件编码

读取文件时指定编码

Python
1
2
3
4
5
6
7
8
9
# 使用 UTF-8 编码读取文件
with open('filename.txt', 'r', encoding='utf-8') as file:
    contents = file.read()
    print(contents)

# 如果文件是用其他编码(如 GBK)保存的,你需要相应地指定编码
with open('filename_gbk.txt', 'r', encoding='gbk') as file:
    contents = file.read()
    print(contents)

写入文件时指定编码

Python
1
2
3
4
5
6
7
8
9
# 使用 UTF-8 编码写入文件
with open('filename.txt', 'w', encoding='utf-8') as file:
    file.write('Hello, World!')

# 如果需要写入包含非标准字符的内容,确保指定正确的编码
# 例如,包含中文字符的内容通常使用 UTF-8 编码
content_with_chinese = '你好,世界!'
with open('filename_chinese.txt', 'w', encoding='utf-8') as file:
    file.write(content_with_chinese)

在读取或写入文件时,如果不指定 encoding 参数,Python 会使用系统默认的编码,这可能会导致在读取或写入包含非标准字符(如中文字符)的文件时出现编码错误。因此,在处理包含非标准字符的文件时,最好明确指定编码。

另外,对于二进制文件的读写,应该使用 'rb''wb' 模式,并且不要指定 encoding 参数,因为二进制文件不依赖于特定的字符编码。例如:

Python
1
2
3
4
5
6
7
# 读取二进制文件
with open('binary_file.bin', 'rb') as file:
    binary_content = file.read()

# 写入二进制文件
with open('binary_file.bin', 'wb') as file:
    file.write(b'\x00\x01\x02\x03')  # 写入四个字节的二进制数据

常见的文件操作异常

  • FileNotFoundError :当尝试打开不存在的文件时引发。
  • PermissionError :当没有足够的权限来打开文件时引发。
  • IsADirectoryError :当试图打开一个目录而不是文件时引发。

在处理文件时,你应该准备好处理这些异常。你可以使用 try/except 块来捕获并处理它们。