1

代替

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

我想 glob 文件,然后在我的 python 脚本中使用 ./testgen.py 的标准输入。我该怎么做。

4

3 回答 3

1

你可以让外壳为你做这件事:

./testgen.py $$dir/part*

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

于 2012-10-10T15:38:40.367 回答
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:].

于 2012-10-10T15:43:24.523 回答
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 列表。

于 2017-02-27T22:24:07.350 回答