繁体   English   中英

Python CSV逐行读取并插入新数据

[英]Python CSV read row by row and insert new data

我有一个csv文件,我将从中逐行读取,对于某些字段,需要处理数据并将结果插入同一行中的另一个字段,然后再转到下一个字段。

我尝试了各种方法,如:

w = open('test.csv', 'w+')
csv_r = csv_reader(w)
csv_w = csv.writer(w)

for row in csv_r:
    row[10] = results
    csv_w.writerows(row)

但我变得空白了。 这样做还有其他办法吗?

基本上我需要读取一行中的特定元素然后处理数据,结果将被附加到同一行中的另一个元素中。

w+清空/截断您的文件,因此您无需迭代。 阅读和写作是r+

要更新文件要么存储所有更新的行,重新打开文件并写入,要么更好的方法是使用tempfile.NamedTemporaryFile写入然后用shutil.move替换原始文件。

from tempfile import NamedTemporaryFile
from shutil import move
import csv


with open("test.csv") as f, NamedTemporaryFile("w",dir=".", delete=False) as temp:   
    # write all updated rows to out tempfile
    csv_w = csv.writer(out)
    csv_r = csv.reader(f)
    for row in csv_r:
       row[10] = results
       csv_w.writerows(row)
# replace original file with updated
move(temp.name,"test.csv")

好像你在同一个档案上打开读者和作者 -

csv_r = csv_reader(w)
csv_w = csv.writer(w)

这是预期的吗? 你不应该在不同的文件上打开它们吗?

如果您故意这样做,请尝试使用不同的文件,当您使用w+模式打开文件时,如果该文件存在则会被覆盖。

w +打开文件进行写入和读取。 如果文件存在,则覆盖现有文件。 如果该文件不存在,则创建一个用于读写的新文件。

尝试使用r+模式打开文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM