目录
文件的打开与关闭
打开文件
在Python中,使用open()
函数来打开文件。open()
函数的基本格式如下:
file_object = open(file_name, access_mode, buffering)
file_name
: 要打开的文件名(包括路径)access_mode
: 文件打开方式,如下表所示:
Mode | Description |
---|---|
'r' |
读取模式,打开文件以进行读取(默认) |
'w' |
写入模式,打开文件以进行写入 |
'a' |
追加模式,打开文件以将内容附加到文件底部 |
'x' |
创建模式,仅在文件不存在时创建新文件并打开 |
'b' |
二进制模式,与其他模式结合使用以进行二进制读写 |
't' |
文本模式,与其他模式结合使用以进行文本读写 |
buffering
: 控制缓冲的策略,如下表所示:
Value | Description |
---|---|
0 |
不做缓冲 |
1 |
行缓冲 |
大于 1 |
缓冲区大小(以字节为单位) |
Python打开文件的基本格式已经在上一个回答中介绍过了,下面是一个简单的案例:
# 以读取模式打开文件
with open('example.txt', 'r') as f:
content = f.read()
print(content)
# 以写入模式打开文件
with open('example.txt', 'w') as f:
f.write('Hello, world!')
# 以追加模式打开文件
with open('example.txt', 'a') as f:
f.write('\nNice to meet you.')
关闭文件
关闭文件是很重要的操作,因为它可以释放系统资源和避免文件损坏。关闭文件的基本格式如下:
file.close()
其中,file是文件对象,close()是关闭文件的方法。当文件被打开时,内存中会创建一个文件对象来代表该文件。当文件操作结束后,应该使用close()方法来关闭文件对象。如果没有关闭文件对象,会导致内存泄漏和其他问题。
下面是一个简单的案例,演示如何使用close()方法来关闭文件:
# 打开文件
file = open('test.txt', mode='r', encoding='utf-8')
try:
# 读取文件内容
content = file.read()
print(content)
finally:
# 关闭文件
file.close()
在这个例子中,我们先打开了一个名为test.txt的文件,然后使用read()方法读取文件的全部内容,并将结果存储到content中。由于文件可能会被其他进程或程序占用,所以在处理文件时应该使用try...finally...语句来确保文件被正确关闭。因此,在finally块中使用close()方法来关闭文件。
上下文管理器
上下文管理器由关键字with和as联合启动,从而实现安全关闭文件,语法格式如下:
with open(file_name) as file_object:
文件的操作
文件的读取与写入
读取文件
read()方法用于读取文本文件中的整个文件内容,read(size)
方法可以读取指定数量的字符,如果不指定 size
参数,则默认读取整个文件内容。注意如果文件过大一次性读取会消耗内存。简单示例:
with open('file.txt', 'r') as file:
content = file.read() # 读取整个文件内容
print(content)
readline()方法用于读取文本文件中的一行内容,包括行末换行符。在文件末尾时返回空字符串 ''
。可以多次调用 readline()
方法以读取文本文件的多行内容。简单示例:
with open('file.txt', 'r') as file:
first_line = file.readline() # 读取第一行内容
second_line = file.readline() # 读取第二行内容
print(first_line)
print(second_line)
readlines()方法用于读取文本文件的所有行并返回一个列表,列表中的每个元素是文件的一行内容(包括行末换行符)。简单示例:
with open('file.txt', 'r') as file:
lines = file.readlines() # 读取所有行,并返回一个列表
for line in lines:
print(line)
需要注意的是,以上方法都针对文本文件进行读取。对于二进制文件,需要使用 rb
模式打开文件,并使用 read()
方法读取文件中的字节。
写入文件
write()方法write(str)
方法用于向文本文件中写入字符串内容。如果文件不存在,则会自动创建该文件。如果文件已存在且打开方式为 w
或 w+
,则会覆盖原有文件内容并写入新的内容。示例:
with open('file.txt', 'w') as file:
file.write('Hello, World!\n') # 写入字符串到文件中
file.write('This is a sample file.\n')
with open('file.txt', 'r') as file:
content = file.read() # 读取文件内容
print(content)
# 输出结果Hello, World!
This is a sample file.
writelines()方法writelines(lines)
方法用于向文本文件中写入多行内容。它接收一个字符串列表