如果给出了 exclude,它必须是一个接受一个文件名参数并返回一个布尔值的函数。根据这个值,相应的文件要么被排除(真),要么被添加(假)。
例如,如果您想排除所有以字母“a”开头的文件名,您可以执行类似...
def exclude_function(filename):
if filename.startswith('a'):
return True
else:
return False
mytarfile.add(..., exclude=exclude_function)
对于您的情况,您需要类似...
EXCLUDE_FILES = ['README', 'INSTALL', '.cvsignore']
def exclude_function(filename):
if filename in EXCLUDE_FILES:
return True
else:
return False
mytarfile.add(..., exclude=exclude_function)
...可以简化为...
EXCLUDE_FILES = ['README', 'INSTALL', '.cvsignore']
mytarfile.add(..., exclude=lambda x: x in EXCLUDE_FILES)
更新
TBH,我不会太担心弃用警告,但如果你想使用新filter参数,你需要类似...
EXCLUDE_FILES = ['README', 'INSTALL', '.cvsignore']
def filter_function(tarinfo):
if tarinfo.name in EXCLUDE_FILES:
return None
else:
return tarinfo
mytarfile.add(..., filter=filter_function)
...可以简化为...
EXCLUDE_FILES = ['README', 'INSTALL', '.cvsignore']
mytarfile.add(..., filter=lambda x: None if x.name in EXCLUDE_FILES else x)