Skip to content

文件的打开与关闭

可以使用内置的 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:
    #... 执行文件操作 ...
#文件在此处自动关闭