テキスト ファイルの zip アーカイブをダウンロードし、アーカイブ内の各テキスト ファイルを処理のために他のハンドラーにディスパッチし、最後に解凍したテキスト ファイルをディスクに書き込む必要があります。
次のコードがあります。同じファイルに対して複数のオープン/クローズを使用しますが、これはエレガントに見えません。よりエレガントで効率的にするにはどうすればよいですか?
zipped = urllib.urlopen('www.abc.com/xyz.zip')
buf = cStringIO.StringIO(zipped.read())
zipped.close()
unzipped = zipfile.ZipFile(buf, 'r')
for f_info in unzipped.infolist():
logfile = unzipped.open(f_info)
handler1(logfile)
logfile.close() ## Cannot seek(0). The file like obj does not support seek()
logfile = unzipped.open(f_info)
handler2(logfile)
logfile.close()
unzipped.extract(f_info)