zip アーカイブをダウンロードするとします。これは、一時ファイルの使用を避けて、その場でファイルをデータ ストリームに追加するようなことを意味します。
wget http://example.com/archive.zip -O - | zipadder -f myfile.txt | pv
bsdtar がそのようなストリームを操作できることをどこかで読みました。
メモリ内で完全に zip 構造を操作する必要があるため、これはおそらく RAM では困難です。そうは言っても、次のように標準入力から読み取ったメモリバックアップされたファイルのようなオブジェクトを操作するためzipadder
に使用して、Pythonで書き込むことができるはずです。StringIO
#!/usr/bin/env python
import zipfile
import sys
import StringIO
s = StringIO.StringIO(sys.stdin.read()) # read buffer from stdin
f = zipfile.ZipFile(s, 'a')
f.write('myfile.txt') # add file to buffer
f.close()
print s.getvalue() # write buffer to stdout