1. open() 函数
open() 函数用于打开一个文件,并返回一个文件对象。它的基本语法如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file:
要打开的文件的路径(可以是相对路径或绝对路径)。
mode:
打开文件的模式,常见的模式有:
'r':
只读模式(默认)。'w':
写入模式,会覆盖文件原有内容,如果文件不存在则创建新文件。'a':
追加模式,在文件末尾添加内容,如果文件不存在则创建新文件。'b':
二进制模式,可与其他模式组合使用,如 'rb' 表示以二进制只读模式打开文件。'x':
创建模式,如果文件已存在则会抛出 FileExistsError 异常。
encoding:
指定文件的编码方式,如 'utf-8'。
示例:
# 以只读模式打开文件
file = open('test.txt', 'r', encoding='utf-8')
# 后续可以对文件对象进行读取操作
file.close() # 操作完成后关闭文件
# 更推荐使用 with 语句,它会自动管理文件的打开和关闭
with open('test.txt', 'r', encoding='utf-8') as file:
# 在此处进行文件读取操作
pass
2. write() 方法
write()
方法用于向文件中写入字符串。它是文件对象的一个方法,调用前需要先使用 open() 函数打开文件。
file = open('test.txt', 'w', encoding='utf-8')
file.write('Hello, World!\n')
file.close()
注意事项:
write()
方法只能写入字符串类型的数据,如果要写入其他类型的数据,需要先将其转换为字符串。
如果以 'w' 模式打开文件,每次调用 write() 会覆盖文件原有内容;如果以 'a' 模式打开,则会在文件末尾追加内容。
3. writelines() 方法
writelines() 方法用于向文件中写入一个字符串列表。它同样是文件对象的方法。
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
with open('test.txt', 'w', encoding='utf-8') as file:
file.writelines(lines)
注意事项:
writelines()
方法不会自动在每个字符串末尾添加换行符,需要手动添加。
该方法会依次将列表中的字符串写入文件。
4. csv.writer() 函数
csv.writer()
函数用于创建一个 CSV 写入对象,它可以将数据以 CSV 格式写入文件。
import csv
with open('test.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
# 后续可以使用 writer 对象进行写入操作
参数说明:
newline='':
在写入 CSV 文件时,需要指定该参数以避免在 Windows 系统下出现多余的空行。
5. csv.writerow() 方法
csv.writerow()
方法用于向 CSV 文件中写入一行数据。它是 csv.writer() 创建的写入对象的方法。
import csv
with open('test.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Age', 'City'])
writer.writerow(['John', 25, 'New York'])
注意事项:
writerow()
方法接受一个可迭代对象(如列表、元组)作为参数,将其中的元素依次写入 CSV 文件的一行中,元素之间用逗号分隔。
6. csv.writerows() 方法
csv.writerows()
方法用于向 CSV 文件中写入多行数据。它同样是 csv.writer() 创建的写入对象的方法。
import csv
data = [
['Name', 'Age', 'City'],
['John', 25, 'New York'],
['Jane', 30, 'Los Angeles']
]
with open('test.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
注意事项:
writerows()
方法接受一个可迭代对象(通常是列表的列表)作为参数,将其中的每个子列表作为一行数据写入 CSV 文件。
7. read() 方法
read()
方法用于从文件中读取指定数量的字符(文本模式)或字节(二进制模式)。如果不指定参数,则会读取整个文件内容。
with open('test.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
参数说明:
如果指定一个整数参数 n,则会读取文件中的前 n 个字符(文本模式)或字节(二进制模式)。
8. csv.reader() 函数
csv.reader()
函数用于创建一个 CSV 读取对象,它可以从 CSV 文件中逐行读取数据。
import csv
with open('test.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
注意事项:
csv.reader()
返回的是一个可迭代对象,每次迭代返回一行数据,以列表的形式表示。
9. readline() 方法
readline()
方法用于从文件中读取一行数据。每次调用该方法,会读取文件的下一行。
with open('test.txt', 'r', encoding='utf-8') as file:
line = file.readline()
while line:
print(line.strip())
line = file.readline()
注意事项:
readline()
方法会读取包括换行符在内的整行数据,如果不需要换行符,可以使用 strip() 方法去除。
10. readlines() 方法
readlines()
方法用于将文件中的所有行读取到一个列表中,列表中的每个元素是文件的一行。
with open('test.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
注意事项:
readlines()
方法会将整个文件内容加载到内存中,如果文件非常大,可能会导致内存不足。
read()、readline() 和 readlines() 的区别总结
read():
一次性读取整个文件内容或指定数量的字符 / 字节,适合处理小文件。readline():
逐行读取文件内容,每次只读取一行,适合处理大文件,逐行处理数据。readlines():
将文件的所有行读取到一个列表中,适合需要一次性获取所有行数据并进行处理的场景,但对于大文件可能会占用大量内存。