2016-10-20 17 views
-2

XMLファイルからテキストを解析しています。構文解析はうまく動作し、結果を完全に印刷することができますが、テキストをテキスト文書に書き込もうとすると、ドキュメントに入っているのは最後の項目だけです。Python - 解析されたXMLをtxtファイルにエクスポート

from bs4 import BeautifulSoup 
import urllib.request 
import sys 

req = urllib.request.urlopen('file:///C:/Users/John/Desktop/Dow%20Jones/compaq%20neg%201.xml') 

xml = BeautifulSoup(req, 'xml') 

for item in xml.findAll('paragraph'): 
    sys.stdout = open('CN1.txt', 'w') 
    print(item.text) 
    sys.stdout.close() 

私はここで何が欠けていますか?

+0

'sys.stdout'を上書きするとサポートされていますが、これは普通ではありません。ファイルハンドルを別の名前で保存しておかないとか、 'f.write()'などを使っている理由はありますか? –

+0

ところで、この質問にはXML特有のことは何もありません。たとえば、["hello"、 "cruel"、 "world"]: 'のアイテムの場合、XMLに関連するコードはまったく存在しないため、単純化することができます。最後の文字列は現在の出力ファイルで繰り返されていました)。 –

+0

私はXMLで作業し、Pythonから書くのはまったく新しいです。私はRと似ていますが、Pythonではありません。 – John

答えて

1

あなたがループを通過するたびにファイルを開いているように見えますが、私はあなたにそれができて驚いています。ファイルを開くと、書き込みモードでファイルが開かれているので、ループを最後に通過したときにその中にあったすべてのファイルが消去されます。

+1

なぜそれは驚くべきことですか?たとえ明示的な終了をしていなくても、明示的なロック手順が取られない限り、POSIXyプラットフォームはファイルを複数のプロセスによって同時にオープンすることができます。 –

+0

私はPOSIXyと呼べるものをコード化して以来、非常に長い時間がかかりました。私はこれを行うことはエラーを発生させると想定していました。なぜなら、これは(一般的に)これが悪いことだと教えられていたからです。情報をありがとう。 – konsta

関連する問題