在 Python 中将文件添加到 Tar 中的空目录
Add files to empty directory within Tar in Python
在 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, ...]
有什么建议吗?
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。
在 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, ...]
有什么建议吗?
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。