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 |
---|
| # 读取整个文件
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()
方法来关闭文件。这是一个好习惯,因为它可以确保所有的更改都被保存,并释放了文件对象所使用的资源。
使用 with
语句
为了更方便地管理文件,Python 提供了一个 with
语句,它可以确保文件在使用后被正确关闭,即使在处理文件时发生异常也是如此。
Python |
---|
| with open('filename.txt', 'r') as file:
contents = file.read()
# 在这里处理文件内容...
# 文件在这里会自动关闭
|
文件路径
当指定文件名时,如果文件位于当前工作目录中,则可以直接使用文件名。否则,你需要提供完整的文件路径(可以是相对路径或绝对路径)。
你说得对,Python 的文件操作确实可以包括指定文件的编码。在读取或写入文件时,我们可能希望指定一个特定的编码方式,比如 UTF-8、GBK 等。在 Python 3 中,open()
函数有一个可选的 encoding
参数,用于指定文件的编码。
以下是如何在打开文件时指定编码的示例:
文件编码
读取文件时指定编码
Python |
---|
| # 使用 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 |
---|
| # 使用 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 |
---|
| # 读取二进制文件
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
块来捕获并处理它们。