tarfile模块之addfile方法

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

你可能感兴趣的:(压缩,python,tarfile)