文件的打开与关闭
可以使用内置的 open(file_name, mode='r', encoding=None)
函数打开文本或二进制文件。
函数的参数解释如下:
file_name
file_name
是一个必需的字符串参数,指定要打开的文件的路径。
它可以是绝对路径或相对路径,如下所示:
'fname.txt'
是位于执行 python 脚本的当前工作目录中的文本文件的相对路径。'../fname.txt'
是位于执行 python 脚本的当前目录之外的文本文件的相对路径。'/Users/edpunk/Documents/fname.txt'
(Windows:'C:\Users\edpunk\Documents\fname.txt'
) 是文本文件的绝对路径,只要它在同一系统中,python 脚本就可以从任何位置打开它。
mode
mode
是一个可选的字符串参数,指定打开文件的方式。它默认为 'r'
,表示以文本模式打开以供读取。
可用的模式有:
mode | 目的 |
---|---|
'r' | 打开文件以供读取(默认)。 |
't' | 以文本模式打开文件(默认)。 |
'w' | 打开文件以供写入,如果文件已存在则截断(清空)文件。 |
'x' | 与 'w' 相同,但如果文件已存在则失败。 |
'a' | 打开文件以供写入,任何新数据都添加到末尾。如果文件不存在则创建新文件。 |
'b' | 以二进制模式打开文件。 |
'rb' | 以二进制和只读模式打开文件。 |
'wb' | 以二进制模式打开文件以供写入,如果文件已存在则截断(清空)文件。 |
'+' | 允许对文件进行读写操作。 |
'r+' | 以读写模式打开文件。如果文件不存在则引发错误。如果文件已存在,如果流的位置未移到文件末尾,则新数据将覆盖现有数据。 |
'r+b' | 以二进制读写模式打开文件。如果文件已存在,则不截断文件。 |
'w+' | 以读写模式打开文件。创建新文件或截断已存在文件的内容。 |
'w+b' | 以二进制读写模式打开文件。创建新文件或截断已存在文件的内容。 |
'a+' | 以读和追加模式打开文件。如果文件不存在则创建新文件。如果文件已存在,新数据将自动添加到文件末尾的现有数据之后。 |
'a+b' | 以二进制读和追加模式打开文件。 |
encoding
encoding
是用于解码或编码文件的编码名称。这只应在文本模式下使用。默认编码取决于平台,但推荐始终显式指定,例如 encoding='utf-8'
。
打开文件并执行一些文件操作后,可以使用 close()
方法安全地关闭它。
例如,让我们编写一个程序,以读和追加模式打开文件 data.txt
,并在后续语句中关闭文件对象。
python
f = open('data.txt', 'a+', encoding='utf-8') # 推荐指定 encoding
#... 执行文件操作 ...
f.close()
更好的做法是使用 with
语句,它能确保文件在使用完毕后自动关闭,即使发生错误也是如此:
python
with open('data.txt', 'a+', encoding='utf-8') as f:
#... 执行文件操作 ...
#文件在此处自动关闭