tarfile模块打包文件时可以利用add()添加文件,同时也可以利用addfile()来添加内存中的二进制流。
很难说这样有什么用处,比如你想打包一个文件到包里面,想预先对文件进行修改,但是又不想创建临时文件。
zipfile也有对应的方法:writerstr,而且比tarfile简单。
TarFile.addfile()需要预先创建一个TarInfo对象,补充Tarinfo对象的名字,长度、时间等信息。
看看下面的例子
import time
import tarfile
from io import BytesIO
test = 'what fuck you doing?\nare you ok?'
tar = tarfile.open('test.tar.gz','w:gz')
#构建Tarinfo对象,添加文件名、缓冲区长度、文件创建时间
info = tarfile.TarInfo(name = "test.txt")
info.size = len(test)
info.itime = time.time()
#添加的IO文件必须是二进制形式
tar.addfile(info,BytesIO(test.encode('utf-8'))
tar.close()
来源:oschina
链接:https://my.oschina.net/u/2434331/blog/547034