我正在尝试使用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,但是我觉得我想要完成的事情效率低下,并且不会修改第一行。谢谢你的帮助。
答案 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())