我有一个根据标志返回生成器或列表的函数。
然而,即使我为list
函数设置了标志,它仍然返回一个生成器;也不打印标志。
我希望先评估 yield 命令之前的打印语句。同样,如果标志设置为,list
我不希望该generator
块进行评估。
import os
def get_iterator_all_files_name(dir_path, flag):
if flag == 'generator':
print(flag)
for (dirpath, dirnames, filenames) in os.walk(dir_path):
for f in filenames:
yield os.path.join(dirpath, f)
elif flag == 'list':
print(flag)
paths = list()
for (dirpath, dirnames, filenames) in os.walk(dir_path):
for f in filenames:
paths.append(os.path.join(dirpath, f))
return paths
使用功能...
file_path = 'path/to/files'
flag = 'list'
foo = get_iterator_all_files_name(file_path, flag)
type(foo)
这会产生结果......
generator
这不是我所期望的;我期待着名单。