【发布时间】:2017-03-23 13:24:05
【问题描述】:
我正在尝试将一些随机数据添加到文本文件中,并且我成功了,但我遇到了标题行的问题。我想添加一次标题行,然后每次运行我的脚本时,它应该只将数据添加到文件中,如果存在则忽略标题行。我尝试过这样的事情,但我失败了。我尝试在 SO python csv, writing headers only once 中查看此示例代码,但无法正确实现。 如果有人帮助我更正我的代码。我会很感激的。
import random
import csv
import os.path
from time import gmtime, strftime
filename = '/home/robdata/collection1.dat'
file_exists = os.path.isfile(filename)
v = random.randint(0, 100)
with open(filename, "a") as csvfile:
headers = ['DATE', 'value']
writer = csv.DictWriter(csvfile, delimiter=',', lineterminator='\n',fieldnames=headers)
if not file_exists:
writer.writeheader() # file doesn't exist yet, write a header
writer.writerow({'DATE': strftime("%Y-%m-%d %H:%M:%S", gmtime()), 'value': v})
它插入数据但不添加任何标题行。我想在第一次运行脚本时包含标题,下次我多次运行脚本时,它应该只添加数据而不是标题行。非常感谢任何想法或帮助。
【问题讨论】:
-
您能否在问题中编辑对您的代码执行错误的描述?
-
@glibdud 我在我的问题下面添加。我能够将数据插入文件但没有任何标题。
-
第一次运行(在文件存在之前),你应该得到一个 AttributeError。看看您的
csv.writer对象与您链接的问题中使用的对象之间的区别。 -
@glibdud 我也尝试了我提到的那个例子。我根据那个例子改变了我的问题。由于我是编程新手,可能这是我在这里犯的一个非常简单的错误。
-
这样不行吧?因为该文件仍然存在。请注意,您的代码询问文件是否存在,而不是询问文件是否为空。