我正在编写一个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'])
答案 0 :(得分: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')