python - 在这种情况下如何避免多次写入 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' 功能在这里不起作用?
解决方案
推荐阅读
- python - PyQt5中的QListView.indexAt返回错误的索引?
- facebook-graph-api - 如何使用jquery从facebook登录获取手机号码?
- java - java中Hash Map中插入字符。HashMab中字符的顺序与输入顺序不同
- android - React-Native:“FirebaseError:没有创建 Firebase App '[DEFAULT]' - 调用 Firebase App.initializeApp() (app/no-app)”
- bash - 如何自动化“拉和推”过程?(git) 使用用户名和密码验证
- javascript - 使用 JSP 将 CSV 文件导入 MySQL 数据库
- xamarin - 如何在 Xamarin 跨平台应用程序中集成 Air watch SDK
- javascript - 如何仅在省略号时激活工具提示?
- python - 获取增量更改的逻辑
- macos - 为什么在 Xcode 计数器中检测时 PMC 值如此之大