我正在写一个备份脚本,使用tarfile模块。我是Python的初学者。这是我的脚本的一部分 - 所以我有一个需要被打包成tar.gz的路径列表。看到这个帖子,我得出了以下结论。现在归档已经创建,但扩展名为.tmp和.data的文件没有被省略。我正在使用Python 3.5。
L = [path1, path2, path3, path4, path5]
exclude_files = [".tmp", ".data"]
# print L
def filter_function(tarinfo):
if tarinfo.name in exclude_files:
return None
else:
return tarinfo
with tarfile.open("backup.tar.gz", "w:gz") as tar:
for name in L:
tar.add(name, filter=filter_function)
os.path.dirname(tarinfo.name)
并与要排除的目录进行比较。我建议您在函数中打印出您要比较的两个部分,以便查看它们是否有可能匹配。如果您一开始就这样做,您会发现您正在将扩展名与完整名称进行比较。 - Jean-François FabreL = [path1, path2, path3, path4, path5] exclude_files = [".tmp", ".data", "/media/Data/Textfiles/Linux", "/media/Data/Textfiles/Old/Pushbullet"] def exclude_function(filename): if filename in exclude_files or os.path.splitext(filename)[1] in exclude_files: return True else: return False with tarfile.open("backup.tar.gz", "w:gz") as tar: for name in L: tar.add(name, exclude=exclude_function)
- akya