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 に答える