首页 > 解决方案 > Python-将数据附加到 CSV 并打印到新的 CSV

问题描述

import csv
with open("somecities.csv", "r") as csvinput:
    with open(" somecities_update.csv", "w") as csvresult:
        writer = csv.writer(csvresult, lineterminator='\n')
        reader = csv.reader(csvinput)
        all = []
        headers = next(reader)
        for row in reader:
            all.append(row)

        # writing to the new file from here
        writer.write(headers)
        for record in all:
            writer.write(record)

somecities.csv 内容:

Country,Capital,CountryPop,AreaSqKm

Canada,Ottawa,35151728,9984670

USA,Washington DC,323127513,9833520

Japan,Tokyo,126740000,377972

Luxembourg,Luxembourg City,576249,2586

我想添加的 somecities_update 数据:

(Brazil, Brasília, 211224219, 8358140)

(China, Beijing, 1403500365, 9388211)

(Belgium, Brussels, 11250000, 30528)

在循环遍历包含数据的旧 CSV 文件的过程中,我已经做到了这一点,但现在我不知道去哪里包含新数据并将其打印在 somecities_update.csv 中。我应该如何完成此代码?

标签: pythoncsvappend

解决方案


我假设您想将“somecities_update.csv”的记录附加到“somecities.csv”的末尾。

为此,您可以在附加模式 ( mode='a') 中打开“somecities.csv”文件,从“somecities_update.csv”中读取每一行并将其复制到 somecities.csv”。

以下代码演示了这种插入:

import io
import csv

with io.open("somecities.csv", mode='a', encoding='utf-8') as dst:
    writer = csv.writer(dst, lineterminator='\n')
    with io.open(
            "somecities_update.csv", mode='r', encoding='utf-8') as src:
        reader = csv.reader(src)
        headers = next(reader)
        for record in reader:
            writer.writerow(record)

警告:此脚本仅在“somecities.csv”文件已存在时才有效。如果没有,则不会生成标头。

注意:您需要使用writer.writerow.


推荐阅读