在Windows中将带有星号的多个文件传递给python shell

Mik*_*ike 13 python command-line arguments

我正在进行Google的Python练习,我需要能够从命令行执行此操作:

python babynames.py --summaryfile baby*.html
Run Code Online (Sandbox Code Playgroud)

pythonPython shell babynames.py是Python程序在哪里,是--summaryfile我的babynames程序要解释的参数,是baby*.html与该表达式匹配的文件列表.但是,它不起作用,我不确定问题是Windows命令shell还是Python.该baby*.html表达不被扩展出文件的完整列表,而不是它的严格字符串来传递.可以通过这种方式将多个文件传递给Python程序吗?

kin*_*all 13

Windows的命令解释器不会像UNIX shell那样扩展通配符,然后再将它们传递给已执行的程序或脚本.

python.exe -c "import sys; print sys.argv[1:]" *.txt
Run Code Online (Sandbox Code Playgroud)

结果:

['*.txt']
Run Code Online (Sandbox Code Playgroud)

解决方案:使用该glob模块.

from glob import glob
from sys import argv

for filename in glob(argv[1]):
    print filename
Run Code Online (Sandbox Code Playgroud)


lol*_*pop 5

跨平台:

import glob
if '*' in sys.argv[-1]:
     sys.argv[-1:] = glob.glob(sys.argv[-1])
continue...
Run Code Online (Sandbox Code Playgroud)