在Python中附加.csv

时间:2016-01-28 05:31:42

标签: python csv

我正在尝试使用python附加包含月号的.csv文件。 .csv看起来像这样:

Month,Jan,Feb
Total,70,80
Critical,20,30
High,50,50

我一直试图按照这些方法开发一种没有运气的方法:

def append_csv(high_value, critical_value)

这将产生以下结果:

append_csv(30, 20)

输出:

Month,Jan,Feb,Mar
Total,70,80,50
Critical,20,30,20
High,50,50,30

我已经看过Appending to the end of a certain line,但是我觉得我想要完成的事情效率低下,并且不会修改第一行。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果要将数据附加到文件的行,则必须将其余行复制到文件的下方,以便为较大的行腾出空间。通过编写新文件然后在结尾重命名,您可以在任何给定时间在内存中保存较少的数据。链接的答案对你想要的东西来说太过分了......因为你只想附加数据,你不需要csv模块来从现有文件中划分出来。

此脚本假定您只想将一组数据添加到文件中。

import os

def append_data(filename, month, total, critical, high):
    vals = month, total, critical, high
    tmp_filename = filename + '.tmp'
    if os.path.exists(tmp_filename):
        os.remove(tmp_filename)
    with open(filename) as fin, open(tmp_filename, 'w') as fout:
         for val in vals:
             col = ',{}\n'.format(val)
             fout.write(next(fin)[:-1] + col)
    os.remove(filename)
    os.rename(tmp_filename, filename)

# test

with open('deleteme', 'w') as fp:
    fp.write("""Month,Jan,Feb
Total,70,80
Critical,20,30
High,50,50
""")

append_data('deleteme', 'Mar', 50, 20, 30)

print(open('deleteme').read())