我们假设我下载了一个zip存档,我的意思是像动态添加一些文件到数据流,避免使用临时文件:
wget http://example.com/archive.zip -O - | zipadder -f myfile.txt | pv
我在某地读过bsdtar可以操纵这些流。
答案 0 :(得分:0)
这可能对RAM很难,因为它需要你完全在内存中操作zip结构。也就是说,应该可以在python中编写zipadder
,使用StringIO
来操作从stdin读取的内存支持的类文件对象,如下所示:
#!/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