有没有办法来tar文件夹并获得tar tar流而不是tarred文件? 我曾尝试使用tar模块,但它直接返回tarred文件。
with tarfile.open("zipped.tar",'w|') as tar:
for base_root, subFolders, files in os.walk('test'):
for j in files:
filepath = os.path.join(base_root,j)
if os.path.isfile(filepath):
with open(filepath, 'rb') as file:
size = os.stat(filepath).st_size
info = tarfile.TarInfo()
info.size = size
info.name = filepath
if(size <= chunck_size):
data = file.read(info.size)
fobj = StringIO.StringIO(data)
tar.addfile(info, fobj)
else:
data = ""
while True:
temp_data = file.read(chunck_size)
if temp_data == '':
break
data = data + temp_data
fobj = StringIO.StringIO(data)
tar.addfile(info, fobj)
答案 0 :(得分:1)
根据the documentation,open
可以采用fileobj
参数:
如果指定了fileobj,则将其用作以二进制模式为name打开的文件对象的替代方法。它应该在0位置。
所以你可以写这个,然后使用缓冲对象。
import io
buffer = io.BytesIO()
with tarfile.open("zipped.tar",'w|', fileobj=buffer) as tar:
答案 1 :(得分:0)
如果我正确阅读了您的问题,您应该在Stackoverflow上找到答案here。