Skip to content

CSV 文件操作 - Python lib: csv

读取文件

使用 csv.reader(fp.readlines()) 读取文件, 其的一个参数应当为 Iter[str] (与 fp.readlines() 返回值类型相同)

示例:

python
import csv

with open(<filename>, 'r', encoding='u8') as fp:  # 读取文件 (以 utf-8 编码)
    reader = csv.reader(fp.readlines())  # 创建 reader 对象, 可以迭代

    for line in reader:  # 便利 csv 文件内容
        line: list[str]  # [<字段1>, <字段2>, ...]

写入文件

使用 csv.writer(fp) 写入 csv 文件

  • 使用 writer (csv.writer 返回值) 的 writerow(Iter[Any]) 写入内容

示例:

python
with open(<filename>, 'w', encoding='u8') as fp:  # 打开文件
    writer = csv.writer(fp)  # 创建 writer 对象
    writer.writerow(['1', '2', '3'])  # 写入第一行
  • 使用 writer (csv.writer 返回值) 的 writerows(Iter[Iter[Any]]) 写入多行内容
    (使用列表)

示例:

python
with open(<filename>, 'w', encoding='u8') as fp:  # 打开文件
    writer = csv.writer(fp)  # 创建 writer 对象
    writer.writerows(  # 写入第 1-3 行
        [
            ['line1', '1', '2', '3'],
            ['line2', '4', '5', '6'],
            ['line3', '7', '8', '9'],
        ]
    )

写入文件 (字典)

使用 csv.DictWriter(fp, <字段名称(Collection[str])>) 写入 csv 文件

  • 使用 writer (csv.DictWriter 返回值) 的 writerows(Iter[Mapping[Any, Any]]) 写入多行内容
    (使用字典)

示例:

python
data = [
    {
        '1': 2,
        '3': 4
    }
]

with file.open('w+', encoding='u8') as fp:  # 打开文件
    writer = csv.DictWriter(fp, ['1', '3'])  # 创建 writer 并定义字段名称
    writer.writeheader()  # 写入头部首行 (字段名称)
    writer.writerows(data)  # 写入各行数据, 如果出现了在 字段 中未定义的 key, 则爆出 `ValueError`