是否可以将文件添加到zip流?

时间:2015-07-15 21:46:08

标签: stream zip add tar bsdtar

我们假设我下载了一个zip存档,我的意思是像动态添加一些文件到数据流,避免使用临时文件:

wget http://example.com/archive.zip -O - | zipadder -f myfile.txt | pv

我在某地读过bsdtar可以操纵这些流。

1 个答案:

答案 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