を使用してファイルをフェッチする python スクリプトがありますurllib2.urlopen
。基本的な流れは次のとおりです。
ヘッダー付きのファイルを探します。
if-not-modified
変更されている場合は、それに何かを加えて、ファイル システムにコピーを書き込みます。そうでない場合は、以前のリクエストで保存したファイルのコピー ローカル コピーを取得し、それに何かを実行します。
- ローカル コピーがなく、変更もされていない場合は、スクリプトが初めて実行されるため、同じリクエストを
if-not-modified
ヘッダーなしで行い、そのコピーもローカルに保存する必要があります。
最後の部分のコードが期待どおりに機能していません。以下の 3 番目のケースを処理するコードを参照してください。
except IOError, e:
#This is the first attempt to download the file.
pathWithNoHeader = ROOT_PATH + uri
requestWithNoHeader = urllib2.Request(pathWithNoHeader)
sourcefileWithNoHeader = urllib2.urlopen(requestWithNoHeader)
document = ET.parse(sourcefileWithNoHeader)
dir = os.path.dirname(__file__)
statefile = open(os.path.join(dir, STATE_FILES) + uri, 'w+')
statefile.write(sourcefileWithNoHeader.read())
statefile.close()
これにより、ファイルが正常にフェッチされます(情報を処理しようとしている他のものが成功しているため、私は知っています)が、ファイルシステムへのファイルの書き込みはエラーなしで失敗しています。基本的に、ファイルは作成されますが空です。私はPython(数か月)が初めてで、これに完全に困惑しています。statefile.write(sourcefileWithNoHeader.read())
犯人のようですが、同じ種類のコードが他の場所でも問題なく機能します。どんな助けでもいただければ幸いです