我正在尝试使用 tarfile 模块对目录的内容进行 tar。
假设这个名为“A”的目录有几个子目录,“a”和“a1”等......有没有办法在尝试添加时从 tarfile 对象中排除这些目录?例如,我有一个要排除的文件列表,我将其放入列表中:
EXCLUDE_FILES = ['README', '.gitignore']
我可以按照此处找到的解决方案排除这些。但是,是否可以更改此方法以排除目录,或者是否有其他方法可以完成?
我正在尝试使用 tarfile 模块对目录的内容进行 tar。
假设这个名为“A”的目录有几个子目录,“a”和“a1”等......有没有办法在尝试添加时从 tarfile 对象中排除这些目录?例如,我有一个要排除的文件列表,我将其放入列表中:
EXCLUDE_FILES = ['README', '.gitignore']
我可以按照此处找到的解决方案排除这些。但是,是否可以更改此方法以排除目录,或者是否有其他方法可以完成?
基于您发布的其他答案的示例,您不能这样做:
def exclude_function(filename):
return os.path.isdir(filename):
mytarfile.add(..., exclude=exclude_function)
或者为了简化,也许:
mytarfile.add(..., exclude=os.path.isdir)
使用过滤器:
def filter_function(tarinfo):
if os.path.isdir(tarinfo.name):
return None
return tarinfo
mytarfile.add(..., filter=filter_function)