【发布时间】:2015-04-22 02:44:42
【问题描述】:
我编写了这个 python 脚本来抓取网络数据并将输出打印到单独的文件中。 'refID.txt' 文件有一个 ID 列表,对于每个 ID,必须从站点中提取数据。输出将打印到“output.txt”文件中。 这是我的代码;
import urllib
import re
referencefile = open("refID.txt")
IDlist = referencefile.read()
refIDlist = IDlist.split("\n")
f = open("output.txt", 'w')
i=0
while i<len(refIDlist):
url = "http://www.ncbi.nlm.nih.gov/clinvar/variation/"+refIDlist[i]
htmlfile = urllib.urlopen(url)
htmltext = htmlfile.read()
regex = '<dt>Variant type:</dt><dd>(.+?)</dd>'
pattern = re.compile(regex)
Vtype = re.findall(pattern,htmltext)
vt = Vtype[0]
printing = "Variation type of " + refIDlist[i] + " is " + str(vt)
print >> f, printing
i+=1
我的问题是,要在“output.txt”文件中打印输出,代码必须运行两次。如果脚本运行一次,则不会打印任何输出。但是如果第二次运行代码,就会打印输出。 代码只运行一次如何打印输出?
【问题讨论】:
-
你在调用 f.close() 吗?我不确定这一点,但我知道 XlsxWriter 在流关闭之前不会真正将数据写入文件。也许您的数据会保存在内存中,直到再次调用 open()?
-
我没有。我必须这样做吗?
-
我想试试看。
-
我不确定
print >> f, printing是做什么的,但您是否尝试过将其换成f.write(printing)?与循环的每次迭代相比,只写入一次文件也更有效。 -
@Will - 我在最后添加了 f.close() 。它有效!谢谢!
标签: python input web-scraping output