将文件添加到tar存档中,而无需先保存

PKu*_*uhn 6 python tar python-3.x

是否可以在tar归档文件中直接创建文件?
上下文:我有一个方法可以创建某种形式的内容,例如字符串。我想将此内容另存为tar存档中的文件。我必须创建一个tmpfile还是可以直接在tar归档文件中创建一个文件?

def save_files_to_tar(tarname):
    archive = tarfile.open(tarname, mode='w')
    for _ in range(some_number):
        content = get_content()
        # HERE add content to tar
Run Code Online (Sandbox Code Playgroud)

小智 5

我认为您应该使用StringIO创建一个类似于内存对象的文件,并使用tarInfo描述一个伪造的文件,如下所示:

import StringIO
import tarfile

archive = tarfile.open(tarname, mode='w')
for _ in range(some_number):
    content = get_content()
    s = StringIO.StringIO()
    s.write(content)
    s.seek(0)
    tarinfo = tarfile.TarInfo(name="my filename")
    tarinfo.size = len(s.buf)
    archive.addfile(tarinfo=tarinfo, fileobj=s)

archive.close()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。