18

私は Google の Python 演習を行っていますが、コマンド ラインからこれを実行できるようにする必要があります。

python babynames.py --summaryfile baby*.html

はPythonpythonシェル、babynames.pyは Python プログラム、はプログラム--summaryfileによって解釈される引数、 はその式に一致するファイルのリストです。しかし、それは機能せず、問題が Windows コマンド シェルにあるのか Python にあるのかわかりません。式はファイルの完全なリストに展開されるのではなく、厳密に文字列として渡されます。このような方法で複数のファイルを Python プログラムに渡すことはできますか?babynamesbaby*.htmlbaby*.html

4

4 に答える 4

18

Windowsのコマンドインタープリターは、実行されたプログラムまたはスクリプトにワイルドカードを渡す前に、UNIXシェルのようにワイルドカードを展開しません。

python.exe -c "import sys; print sys.argv[1:]" *.txt

結果:

['*.txt']

解決策:globモジュールを使用します。

from glob import glob
from sys import argv

for filename in glob(argv[1]):
    print filename
于 2012-09-19T19:49:54.140 に答える
6

クロスプラットフォーム:

import glob
if '*' in sys.argv[-1]:
     sys.argv[-1:] = glob.glob(sys.argv[-1])
continue...
于 2012-09-19T19:52:24.523 に答える
2

argparse の使用:

import argparse
parser=argparse.ArgumentParser()
parser.add_argument(dest='wildcard',nargs='+')

print(parser.parse_args().wildcard)
于 2018-01-10T15:35:18.053 に答える