追加.csv';Python中的s

追加.csv';Python中的s,python,csv,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

我正在尝试使用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

我已经看过了,但是对于我试图完成的任务,它感觉效率低下,并且不会修改第一行。感谢您的帮助。

如果您想将数据附加到文件的行中,则必须将其余的行复制到文件的下一行,以便为较大的行腾出空间。通过编写一个新文件,然后在最后对其进行重命名,在任何给定时间内存中的数据都会减少。链接的答案是你想要的太多了。。。因为您只想附加数据,所以不需要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())

写月、高、关键、总计,然后在每个月附加一行:
1月、20,50,70
2月、30,50,80
,等等,这会更有意义,也会更容易,但是,这些数据是通过一个图形直观地表示的,该图形表示一段时间内的值。但是,将一个合适的csv文件的列转换成一个图形是很容易的。你最好还是接受@MarkTolonen的建议。csv由专有仪表板使用。这是它使用的格式。我很想更改它,但它已经很好地确定了数据是如何显示的—暂停一行还是重写整个文件以添加一列。糟糕的设计,这是为了我。非常感谢你!