将数据添加到csv文件python中的行

时间:2015-06-02 06:56:46

标签: python csv

我正在尝试遍历python中的现有csv文件,并在每行的末尾附加(不同的)值。

读取文件行的​​代码

out_file = open(outputfile, 'r+')
out_reader = csv.reader(out_file)
out_lines = [row for row in out_reader]

附加新值的代码

out_lines[i] = out_lines[i][0] + "\t %r " % lstName[0]

问题是我在out_lines中获得了所需的值,但不是在原始文件中。将这些结果附加到原始文件的最佳方法是什么,一次一行?

2 个答案:

答案 0 :(得分:1)

如果您不想将新数据写入第二个文件,则需要覆盖源。

从您的代码中看来,输入文件似乎只有1列,而列分隔符是制表符。

不清楚附加到每一行的新值来自哪里,所以我假设它存储在一个列表(lstName)中,该列表至少包含与输入中的行一样多的元素文件:

import csv

lstName = ['a', 'b', 'c', 'd', 'e', 'etc']

with open('file.csv', 'r+') as f:
    reader = csv.reader(f, delimiter='\t')
    out_lines = [row + [lstName[i]] for i, row in enumerate(reader)]
    f.seek(0)    # set file position to the beginning of the file
    csv.writer(f, delimiter='\t').writerows(out_lines)

首先读取文件并使用附加的新值构建列表。 enumerate()用于提供lstName列表的索引。读取文件后,文件将重新定位到文件的开头,然后新数据将写入文件,覆盖原始文件内容。

答案 1 :(得分:0)

您必须回写该文件并附加它:

with open("yourcsvfile", "a") as csvfile:
#your read loop here
csvfile.write(outlines[i])