在调查我的其他问题时,我遇到了一个非常奇怪的行为。
运行代码:
def test(prefix, custom_meta_files = []):
postfix = 'tgz'
if prefix[-1] != '.':
postfix = '.tgz'
archive = tarfile.open(prefix+postfix, "w:gz")
files = filter(lambda path: path.startswith(prefix), os.listdir())
print('files: {0}'.format(list(files)))
print('files: {0}'.format(list(files)))
files: ['ga_run.seq_niche.N30.1.bt0_5K.params', 'ga_run.seq_niche.N30.1.bt0_5K.stats', 'ga_run.seq_niche.N30.1.bt0_5K.tgz']
files: []
似乎强制转换filter object
为list
清除它。为什么会这样,是否需要?