文件列表(可能包含通配符)作为Python脚本的参数

时间:2012-03-13 01:47:33

标签: python glob

在许多python脚本中,我发现自己做了以下事情:

for maybe_glob in sys.argv[1:]:
    for filename in glob.iglob(maybe_glob):
        print(filename)

我必须这样做,因为脚本也需要在不扩展通配符的终端(例如windows)中运行。这是更短的版本吗?是否有一种方法(例如使用argparser)在参数解析期间直接扩展通配符?

由于

1 个答案:

答案 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))