如何以编程方式仅从Python字符串和没有临时文件创建嵌套目录和文件的tar存档?

dav*_*gan 4 python file tar in-memory

我想用Python创建一个带有分层目录结构的tar存档,使用字符串作为文件内容.我已经阅读了这个问题,它显示了一种将字符串添加为文件的方法,但不是作为目录.如何在不实际制作目录的情况下动态添加目录到tar存档?

就像是:

archive.tgz:
    file1.txt
    file2.txt
    dir1/
        file3.txt
        dir2/
            file4.txt
Run Code Online (Sandbox Code Playgroud)

jco*_*ado 10

扩展链接问题中给出的示例,您可以按如下方式进行:

import tarfile
import StringIO
import time

tar = tarfile.TarFile("test.tar", "w")

string = StringIO.StringIO()
string.write("hello")
string.seek(0)

info = tarfile.TarInfo(name='dir')
info.type = tarfile.DIRTYPE
info.mode = 0755
info.mtime = time.time()
tar.addfile(tarinfo=info)

info = tarfile.TarInfo(name='dir/foo')
info.size=len(string.buf)
info.mtime = time.time()
tar.addfile(tarinfo=info, fileobj=string)

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

请注意mode属性,因为默认值可能不包含更改为它并获取其内容所需的目录所有者的执行权限.