在 Python 中文件操作是一项基础且重要的功能,它主要包括打开、读写、关闭等操作。
使用 open()
函数来打开文件,其基本语法如下:
f = open(file_path, mode, encoding=None)
f
:是 open
函数的文件对象,拥有属性和方法。
file_path
:文件的路径,可以是相对路径或绝对路径。
mode
:打开文件的模式,常见的模式有:
r
:以只读模式打开文件,文件指针会放在文件的开头,这是默认模式。
w
:以写入模式打开文件,如果文件已存在则会覆盖原有内容(原有内容会被删除),如果文件不存在则会创建新文件。
a
:以追加模式打开文件,文件指针会放在文件末尾,新的内容会被写到已有内容之后,如果文件不存在则会创建新文件。
x
:以独占创建模式打开文件,若文件已存在则会抛出 FileExistsError
异常。
b
:以二进制模式打开文件。
t
:以文本模式打开文件。
+
:以读写模式打开文件。
encoding
:指定文件的编码方式,常见的有 'utf-8'
、'gbk'
等。注意:encoding
的顺序不是第三位,所以不能用位置参数,要使用关键字参数直接指定。
read()
方法: 文件对象.read(num)
,num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
try:
f = open('example.txt', 'r', encoding='UTF-8')
content = f.read()
print(content)
finally:
f.close()
在上述代码中,try...finally
语句确保了文件在使用完后会被关闭。不过,更推荐使用 with
语句,它能自动处理文件的关闭操作。
with open('example.txt', 'r', encoding='UTF-8') as f:
content = f.read()
print(content)
可以使用 readline()
方法逐行读取文件内容。
with open('example.txt', 'r', encoding='UTF-8') as f:
line = f.readline()
while line:
print(line.strip())
line = f.readline()
也可以使用 for
循环来逐行读取文件内容,这种方式更加简洁。
with open('example.txt', 'r', encoding='UTF-8') as f:
for line in f:
print(line.strip())
使用 readlines()
方法可以读取文件的所有行,并将其存储在一个列表中,其中每一行的数据为一个元素。
with open('example.txt', 'r', encoding='UTF-8') as f:
lines = f.readlines()
for line in lines:
print(line.strip())
其中 strip()
是 Python 字符串对象的一个内置方法,用于移除字符串开头和结尾的指定字符(默认是空白字符)。这里的指定字符是换行符,用于清除每行结尾处的换行符。它不会修改原始字符串,而是返回一个新的字符串。
使用 write()
方法可以向文件中写入内容,若以 'w'
模式打开文件,会覆盖原有内容:
with open('example.txt', 'w', encoding='UTF-8') as f:
file.write('Hello, World!\n')
file.write('This is a test.\n')
若以 'a'
模式打开文件,会将内容追加到文件末尾:
with open('example.txt', 'a', encoding='UTF-8') as f:
file.write('This is an appended line.\n')
在完成文件操作后,需要关闭文件以释放系统资源。可以使用 close()
方法手动关闭文件,不过更推荐使用 with
语句,它会在代码块结束时自动关闭文件。
可以使用 seek()
方法来移动文件指针的位置,其基本语法如下:
file.seek(offset, whence)
offset
:表示要移动的字节数。
whence
:指定从哪个位置开始移动,有三个可选值:
0
:从文件开头开始移动,这是默认值。
1
:从当前位置开始移动。
2
:从文件末尾开始移动。
例如,将文件指针移动到文件开头:
with open('example.txt', 'r', encoding='utf-8') as file: file.seek(0) # 将文件指针移动到文件开头 content = file.read() print(content)
在进行文件操作之前,有时需要检查文件是否存在,可以使用 os.path.exists()
函数:
import os if os.path.exists('example.txt'): with open('example.txt', 'r', encoding='utf-8') as file: content = file.read() print(content) else: print('文件不存在')