1

我有以下代码:

f=open('data.txt', 'w')
conn = urllib2.urlopen('http://example.com')
page_html = conn.read()
data=BeautifulSoup(page_html)
count=0
out=""
for val in data.findAll('td'):
    count=count+1
    if(count%2==0 and val.contents):
        out=out+val.contents[0].strip(' \n\t')+"\n"
    if(count>=18):
        f.write(out+"\n")
        break
f.closed

现在,当我执行代码时,上一次运行的输出进入文件 data.txt

例如,现在我在 url 中有 example.com,我运行代码然后将 url 更改为 stackoverflow.com。现在,当我再次运行它并检查 data.txt 时,我在 data.txt 文件中有 example.com 的输出。下次我使用不同的 url 运行时,我会在文件中获得 stackoverflow.com 的输出。有人可以帮我解决这个问题吗?我检查了代码中每个阶段的输出。如果我直接给出输出而不是写入文件,它会完美运行。

4

2 回答 2

5

您可能想使用f.close()而不是f.closed. 后者不会关闭文件。它返回一个布尔值,告诉您文件是否已关闭。

我还建议您使用with语句而不是手动关闭文件。

with open('data.txt', 'w') as f:
    # etc...
于 2012-04-27T15:14:25.130 回答
1

你想关闭你的文件

 f.close()

函数调用,从而刷新您的输出缓冲区。

于 2012-04-27T15:14:39.343 回答