在 python3 中的 csv 文件的特定行之后添加新行

Posted

技术标签:

【中文标题】在 python3 中的 csv 文件的特定行之后添加新行【英文标题】:add a new line after a specific line of a csv file in python3 【发布时间】:2017-04-03 19:19:43 【问题描述】:

我正在编写一个 python 代码,其中读取了一个 csv 文件并写入了一些信息。在这个阶段,我应该找到一个特定的行并在其后添加一行新数据。我已成功找到该行,但我无法在其后写入新的数据行。这是我的尝试:

file = open('db.csv', 'r+')
table = csv.reader(file)
for row in table:
    if(row == ['tbl']):
        file.seek(len(row)) #this part is the problem I suppose
        break
table = csv.writer(file)
table.writerow(['1', '2'])

【问题讨论】:

你想用换行符+1, 2替换所有剩余的零件吗? @falsetru 不不不。我只想添加该行。文件中不应更改任何其他内容。 【参考方案1】:

使用file.seek / file.tell 很棘手,因为csv.reader 可以提前读取;无法告诉与当前行匹配的确切文件位置。

插入也不是小事;你需要记住剩余的部分。

我会这样做:

为写入创建另一个文件 根据需要写 完成后,用新文件替换旧文件
import csv
import shutil

with open('db.csv', 'r', newline='') as f, open('db.csv.temp', 'w', newline='') as fout:
    reader = csv.reader(f)
    writer = csv.writer(fout)
    for row in reader:
        writer.writerow(row)
        if row == ['tbl']:
            writer.writerow([])  # empty line

shutil.move('db.csv.temp', 'db.csv')

【讨论】:

以上是关于在 python3 中的 csv 文件的特定行之后添加新行的主要内容,如果未能解决你的问题,请参考以下文章

迭代python中的特定csv行输出一个空白文件

从特定行读取 csv

如何更新python中熊猫数据框特定列中的所有行?

在 Python 中检索包含特定关键字的 CSV 文件的特定行

将特定信息从 CSV 插入 SQL python3

在 csv 文件中查找行的最大值,同时排除 pyspark 中的标题