python tarred文件夹流
有没有一种方法可以给文件夹涂上焦油,并获得一个涂了焦油的流,而不是一个涂了焦油的文件? 我尝试使用tar模块,但它直接返回tarred文件python tarred文件夹流,python,stream,tar,Python,Stream,Tar,有没有一种方法可以给文件夹涂上焦油,并获得一个涂了焦油的流,而不是一个涂了焦油的文件? 我尝试使用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,
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)
以tarfile.open(“zipped.tar”,“w |”)作为tar的:
对于os.walk('test')中的基本根目录、子文件夹和文件:
对于文件中的j:
filepath=os.path.join(基本根,j)
如果os.path.isfile(文件路径):
打开(文件路径“rb”)作为文件:
size=os.stat(filepath).st\u size
info=tarfile.TarInfo()
info.size=大小
info.name=文件路径
如果(size根据,open
可以采用fileobj
参数:
如果指定了fileobj,则它将用作以二进制模式打开的文件对象的替代名称。它应该位于位置0
所以你可以写这个,然后使用缓冲区对象
import io
buffer = io.BytesIO()
with tarfile.open("zipped.tar",'w|', fileobj=buffer) as tar: