如果给出了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)