将文件添加到Python中的Tar中的空目录

时间:2016-01-22 17:56:51

标签: python directory tar tarfile

在Python中,我试图在其中创建一个带有两个空目录的tar,然后将一个文件列表添加到tar中的每个空目录中。我试过这样做,但是它不起作用。

def ISIP_tar_files():
    with tarfile.open("eeg_files.tar", "w") as f:
        ep_dir = tarfile.TarInfo("Eplilepsy Reports")
    not_ep_dir = tarfile.TarInfo("Non Epilepsy Reports")
        ep_dir.type = not_ep_dir.type = tarfile.DIRTYPE
    f.addfile(ep_dir)
    f.addfile(not_ep_dir)
    with ep_dir.open():
            for name in ep_list:
        f.tarfile.add(name)

老实说,我不相信它会起作用,但值得一试,因为我无法在Google上找到任何其他解决方案。这只是代码的一个模块,它不包括主程序或导入。 ep_list是包含路径的文件列表,它看起来类似于:

ep_list = [/data/foo/bar/file.txt, /data/foo/bar2/file2.txt, ...]

任何Sugegstions?

1 个答案:

答案 0 :(得分:1)

import tarfile
import os

ep_list = ['./foo/bar/file.txt', './foo/bar/file2.txt']

def ISIP_tar_files():
    with tarfile.open("eeg_files.tar", "w") as f:
        ep_dir = tarfile.TarInfo("Eplilepsy Reports")
        not_ep_dir = tarfile.TarInfo("Non Epilepsy Reports")
        ep_dir.type = not_ep_dir.type = tarfile.DIRTYPE
        ep_dir.mode = not_ep_dir.mode = 0o777
        f.addfile(ep_dir)
        f.addfile(not_ep_dir)
        for name in ep_list:
            f.add(name, arcname="Eplilepsy Reports/" + os.path.basename(name), recursive=False)

目录文件权限模式应该至少为所有者可执行。否则无法提取。

  • arcname 是存档中文件的替代名称。
  • recursive 表示是否保持原始目录递归添加,其默认值为True。