代替
cat $$dir/part* | ./testgen.py
我想 glob 文件,然后在我的 python 脚本中使用 ./testgen.py 的标准输入。我该怎么做。
你可以让外壳为你做这件事:
./testgen.py $$dir/part*
这会将每个匹配的文件名作为单独的参数传递给您的程序。然后,您只需从sys.argv[1:]
.
可以使用glob
和fileinput的组合:
from glob import glob
import fileinput
for line in inputfile.input(glob('dir/part*')):
print line # or whatever
虽然如果你让 shell 来扩展它 - 你可以使用inputfile.input()
它,它会从sys.argv[1:]
.
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 列表。