【问题标题】:How to append new rows in CSV file python?如何在 CSV 文件 python 中追加新行?
【发布时间】:2019-05-10 10:32:38
【问题描述】:

我使用的是 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.7 csv


【解决方案1】:

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

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 })

【讨论】:

  • 抱歉回复晚了,但你的代码不起作用,不知何故它什么也没写,只是一个空的 csv 文件。
  • 代码运行没有任何错误,但不知何故 csv 文件是空的,因为这个链接。 imgur.com/r8bnUWO
  • StopIteration 抛出了我之前没有处理的异常。
  • 我已经更新了你的代码,但是当我运行它时,它甚至没有写入 data.csv 文件
  • 但我在执行代码之前尝试过手动创建一个“data.csv”,并且数据是写入大声笑的,就像imgur.com/KLerJUP
猜你喜欢
  • 2011-01-22
  • 2020-01-23
  • 2023-03-31
  • 2017-04-05
  • 1970-01-01
  • 2022-01-24
  • 2021-10-05
相关资源
最近更新 更多