1. 文件读取
(1)使用open()函数打开文件
基本语法是file_object = open(file_name, mode),其中file_name是要打开的文件的名称(包括路径,如果文件不在当前目录下),mode是打开文件的模式。例如,
f = open('example.txt', 'r')
这里r表示以只读模式打开文件。
常见的打开模式还有w(写入模式,如果文件存在则清空内容后写入,文件不存在则创建新文件)、a(追加模式,在文件末尾添加内容,文件不存在则创建新文件)、x(独占创建模式,创建新文件,如果文件已存在则抛出异常)、b(二进制模式,用于读取或写入二进制文件,如图片、音频等,通常与r、w、a等模式结合使用,如rb、wb)和t(文本模式,默认模式,用于读取或写入文本文件)。
(2)读取文件内容的方法
read () 方法:读取整个文件的内容并返回一个字符串。例如,
content = f.read()
这样content就包含了文件example.txt中的所有文本内容。不过,如果文件很大,使用这种方法可能会占用大量内存。
readline () 方法:每次读取文件的一行内容。例如,line1 = f.readline()会读取文件的第一行,再次调用readline()会读取第二行,以此类推。这对于逐行处理文件内容很有用,比如读取日志文件。
readlines () 方法:读取文件的所有行,并返回一个包含每行内容的列表。例如,
lines = f.readlines()
列表lines中的每个元素就是文件中的一行内容。
(3)关闭文件
在读取完文件后,应该关闭文件,以释放系统资源。可以使用file_object.close()方法来关闭文件,如f.close()。为了确保文件总是能够正确关闭,也可以使用try - finally语句块或者with语句。例如,使用with语句:
with open('example.txt', 'r') as f:content = f.read()# 在这里对content进行处理,无需手动关闭文件
在with语句块结束时,文件会自动关闭。
2. 文件写入
(1)使用open()函数打开文件
和读取文件类似,不过打开模式要选择写入相关的模式,如w或a。例如,
f = open('output.txt', 'w')
这是以写入模式打开output.txt文件。
(2)写入文件内容的方法
write () 方法:用于将一个字符串写入文件。例如,f.write(“这是要写入文件的内容”),会将指定的字符串写入到打开的文件中。如果文件是以w模式打开的,之前的内容会被清空;如果是以a模式打开的,则会在文件末尾添加内容。
writelines () 方法:用于将一个字符串序列(如列表)写入文件。例如,
lines = ["第一行","第二行","第三行"]
f.writelines(lines)
会将列表中的每一行内容依次写入文件。需要注意的是,这个方法不会自动添加换行符,所以如果需要每行单独成一行,列表中的字符串应该已经包含换行符,或者在写入时手动添加换行符,如
f.writelines([line + "\n" for line in lines])
(3)关闭文件
同样,在写入完成后要关闭文件,可以使用f.close()或者with语句来确保文件关闭。例如:
with open('output.txt', 'a') as f:f.write("这是追加的内容\n")
3. 文件操作的注意事项
(1)编码问题
在处理文本文件时,需要注意文件的编码方式。默认情况下,open()函数使用系统默认编码(通常是 UTF - 8)。如果文件是其他编码方式,如 GBK,可以通过encoding参数指定编码,如
f = open('example.txt', 'r', encoding='GBK')
(2)文件路径问题
如果文件不在当前目录下,需要提供正确的文件路径。路径可以是绝对路径(从根目录开始的完整路径),也可以是相对路径(相对于当前目录的路径)。例如,…/data/file.txt是一个相对路径,表示当前目录的上级目录中的data文件夹下的file.txt文件。
(3)文件权限问题
在写入文件时,需要确保程序有写入文件所在目录的权限。如果没有权限,可能会导致写入失败并抛出异常。