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()