我目前正在使用python3执行一个数据抓取项目,并试图将刮取的数据写入CSV文件。我目前的做法是:
import csv
outputFile = csv.writer(open('myFilepath', 'w'))
outputFile.writerow(['header1', 'header2'...])
for each in data:
scrapedData = scrap(each)
outputFile.writerow([scrapedData.get('header1', 'header 1 NA'), ...])
但是,一旦这个脚本完成,CSV文件将为空。如果我只是跑:
^{pr2}$将生成一个包含以下标题的CSV文件:
header1,header2,..
如果我只是在data
中刮取1,例如:
outputFile.writerow(['header1', 'header2'...])
scrapedData = scrap(data[0])
outputFile.writerow([scrapedData.get('header1', 'header 1 NA'), ...])
将创建一个CSV文件,其中包括data[0]
的头和数据:
header1,header2,..
header1 data for data[0], header1 data for data[0]
为什么会这样?在
使用
w
打开文件时,它会删除以前的数据因此,当您在用
w
写入scrape数据后打开该文件时,您只会得到一个空白文件,然后在该文件上写入头文件,以便只看到该头文件。尝试将w
替换为a
。打开文件的新调用看起来像outputFile = csv.writer(open('myFilepath', 'a'))
您可以详细了解有关打开文件here的模式的详细信息
参考号:How do you append to a file?
在DYZ的评论后编辑:
您还应该在完成附加后关闭文件。我建议使用如下文件:
这样你就不必担心记得关上它了。一旦代码存在
with
块,文件将被关闭。在我会用熊猫来做这个:
这里我假设您的
data
对象是一个列表列表。在相关问题 更多 >
编程相关推荐