【发布时间】:2020-09-20 13:44:52
【问题描述】:
我是 python 的初学者,有什么方法可以在读取和写入同一个文件时更新 csv 文件,或者有其他方法可以做到这一点。欢迎所有建议。
注意:我有一个包含 5k 及以上记录的 CSV 文件。
我要做的是逐行读取csv文件,如果
msg_sent的值为False,则将其更新为True这是我尝试过的代码 sn-p 但它在 CSV 文件的末尾添加了一个新行而不是更新它,
with open('subscribers.csv', 'r+') as subscribers_csv:
reader = csv.DictReader(subscribers_csv)
writer = csv.DictWriter(subscribers_csv,
delimiter=",",
lineterminator="\n",
fieldnames=['user_id', 'name', 'msg_sent'])
for subscriber in reader:
if subscriber['msg_sent'] == 'False':
subscriber_row = {'user_id': subscriber['user_id'],
'name': subscriber['name'],
'msg_sent': True}
writer.writerow(subscriber_row)
【问题讨论】:
-
我认为同时读取和写入同一个文件不是一个好主意。当您指定
pandas标记时,我建议使用read_csv读取整个文件(5K 行并不多),然后更新列,然后使用to_csv将其写回。它只有 3 行代码,可能不会那么令人头疼。 -
pandas更容易 - 你不需要把loop逐行放置 - 这样做可以得到你的结果 -df[df['msg_sent'] == False]
标签: python python-3.x pandas csv dictionary