首页 > 解决方案 > 在这种情况下如何避免多次写入 csv 标头?

问题描述

我正在从互联网上抓取数据,有时我无法控制 url 连接被终止。为了不爬取已经获取的数据,II 有一个缓存来标记已爬取的内容。结果数据存储在 CSV 中。我第一次启动程序时,它先写入 csv 标头,然后写入其内容,如下所示:

with open(outputfile, 'a' encoding='utf-8') as f:
  writer = csv.DictWriter(f, fieldnames=fieldnames)
  writer = writeheader()
  for item in items:
     ...

我正在使用 write 'a' 模式将内容增量写入 csv 文件。第一次先写标题就可以了。程序重新启动时会出现问题,因为它再次写入 csv 标头,原因是:

writer = writeheader()

执行此代码时,有没有办法知道 csv 文件已经有一个标题:

with open(outputfile, 'a' encoding='utf-8') as f:

即使我重新启动程序,我也不需要多次编写标题。

编辑:我刚刚接受了上述类似问题的答案作为这个问题的答案。我认为它应该工作。但是,当我测试时,它不起作用如下:

filename = '../1.csv'
with open(filename, 'a') as f:
    headers = ['a']
    writer = csv.DictWriter(f, fieldnames=headers)
    if not os.path.isfile(filename):
        writer.writeheader()

即使我将“1.csv”更改为任何内容,它也始终确定文件存在。为什么 eh 'isfile' 功能在这里不起作用?

标签: pythoncsv

解决方案


推荐阅读