glob文件,用作python脚本中python脚本的输入。

时间:2012-10-10 15:36:57

标签: python stdin glob

而不是

cat $$dir/part* | ./testgen.py

我想将文件全局化,然后在我的python脚本中使用stdin for ./testgen.py。我该怎么做

3 个答案:

答案 0 :(得分:1)

你可以让shell为你做这件事:

./testgen.py $$dir/part*

这会将每个匹配的文件名作为单独的参数传递给您的程序。然后,您只需阅读sys.argv[1:]中的文件名。

答案 1 :(得分:0)

可以使用globfileinput的组合:

from glob import glob
import fileinput

for line in inputfile.input(glob('dir/part*')):
    print line # or whatever

虽然如果你让shell扩展它 - 你可以使用inputfile.input(),它将从sys.argv[1:]获取输入文件。

答案 2 :(得分:0)

nneonneo关于shell扩展是正确的,但它不能在Windows上运行。这是一个简单,完全防弹的跨平台版本:

import sys
from glob import glob

def argGlob(args=None):
    if args is None: args = sys.argv

    return [subglob for arg in args for subglob in glob(arg)]

argGlob将返回与Unix风格的shell扩展完全相同的东西,它也不会搞砸任何已经扩展的args列表。