菜单
本页目录

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():将文件的所有行读取到一个列表中,适合需要一次性获取所有行数据并进行处理的场景,但对于大文件可能会占用大量内存。