在许多python脚本中,我发现自己做了以下事情:
for maybe_glob in sys.argv[1:]:
for filename in glob.iglob(maybe_glob):
print(filename)
我必须这样做,因为脚本也需要在不扩展通配符的终端(例如windows)中运行。这是更短的版本吗?是否有一种方法(例如使用argparser)在参数解析期间直接扩展通配符?
由于
答案 0 :(得分:1)
你可以避免使用链接迭代器的双循环,但它似乎不是一种改进。
for fname in itertools.chain(*map(glob.iglob, sys.argv[1:])):
print fname
但你可以把它包装成一个例程:
def allglob(args):
return itertools.chain.from_iterable(map(glob.iglob, args))