首页 > 解决方案 > 如何在 CSV 文件 python 中追加新行?

问题描述

我正在使用 python 2.7,并且我有一个程序,当我从相机拍照时,每次捕获图像时,数据(相位、日期、时间、图像名称)都将存储在 CSV 文件中。这是执行下面的短代码时的 csv 文件。 https://i.stack.imgur.com/hzMTe.png

如您所见,当捕获图像时,将在下一行再次打印出“阶段”、“日期”、“时间”、“名称”的“标题”。

我希望标题只在 csv 文件的顶部打印一次。当我在一些网站上闲逛时,[newline=''] 关键字应该可以工作,但因为我使用的是 python 2.7,所以这是不可能的。

任何帮助将不胜感激。

import csv

with open('data.csv', 'a') as f:

                fieldnames = ['Phase', 'Date', 'Time','Name']
                thewriter = csv.DictWriter(f, fieldnames = fieldnames)
                thewriter.writeheader()

                thewriter.writerow({'Phase': _phase, 'Date' : 
                 _currentDT.date(), 'Time' : _currentDT.time(),
                                    'Name' : _nameImage })

标签: python-2.7csv

解决方案


如果你想要一个简单的解决方案,你可以做这样的事情(不是最有效的解决方案)

import csv

with open('data.csv', 'r+') as f:
    reader = csv.reader(f)
    row1 = []

    try:
        row1 = next(reader)
    except StopIteration:
        print("No data is written to file yet")

    fieldnames = ['Phase', 'Date', 'Time', 'Name']
    thewriter = csv.DictWriter(f, fieldnames=fieldnames)

    if row1 != fieldnames:
        thewriter.writeheader()

    thewriter.writerow({'Phase': _phase, 'Date' : 
     _currentDT.date(), 'Time' : _currentDT.time(),'Name' : _nameImage })


推荐阅读