当需要读写文件时,Python 提供了 with open
语句,它可以自动处理文件的开关和一些异常情况,可以大大简化文件读写的操作。
基本语法
with open(file_path, mode) as file_obj:
# 对文件对象 file_obj 进行操作
参数说明:
file_path
:文件路径,是文件在文件系统中的路径,可以为绝对路径或者相对路径。-
mode
:模式参数,表示对文件进行何种读写操作。常用的模式有以下几种: -
'r'
:读取模式,默认模式,文件指针在文件开头。 'w'
:写入模式,如果文件存在,会覆盖原有内容;如果文件不存在则自动创建一个新的文件。'a'
:追加模式,如果文件存在,则在文件末尾追加写入;如果文件不存在则自动创建一个新的文件。'x'
:独占模式,操作文件前会先检查文件是否存在,如果不存在则创建新文件;如果存在则报错。'b'
:二进制模式,常常与其他模式一起使用,如'rb'
表示二进制读取,’wb’ 表示二进制写入。
读取文件内容
使用 with open
语句可以自动打开并关闭文件,下面是一个读取文件内容的例子:
with open('test.txt', 'r') as file_obj:
contents = file_obj.read()
print(contents)
该语句会打开名为 test.txt
的文件,将文件指针移到文件开头,并将文件内容存储到变量 contents
中,最后打印文件内容。
如果文件不存在或者路径不正确,将会抛出 FileNotFoundError
异常,可以使用 try...except
语句来捕获该异常:
filename = 'no_file.txt'
try:
with open(filename, 'r') as file_obj:
contents = file_obj.read()
except FileNotFoundError:
print(f"Sorry, the file {filename} does not exist.")
按行读取文件内容
使用 with open
语句可以方便地对文件逐行读取,下面是一个按行读取文件内容的例子:
with open('test.txt', 'r') as file_obj:
for line in file_obj:
print(line.strip())
该语句会打开名为 test.txt
的文件,在循环中遍历文件对象 file_obj
中的每一行,去掉每行末尾的空格和换行符后打印出来。
需要注意的是,对于大文件,每行应该单独处理,以避免占用过多内存。
总结
with open
语句是 Python 文件读写操作的基础语句,可以大大简化文件读写过程,提高 Python 程序的效率。在读写文件时需要注意文件路径和文件模式。