2

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

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

我在某处读到 bsdtar 可以操纵这样的流。

4

1 回答 1

0

这在 RAM 上可能很难,因为它需要您完全在内存中操作 zip 结构。也就是说,应该可以zipadder用 python 编写,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
于 2015-07-15T23:31:27.617 回答