0

複数のファイルを処理できる小さなスクリプトを書いています。そのため、ファイルをカンマ区切りで渡し、arg.split(',') を実行してから、それぞれを処理できることを追加しました。

今、次のような入力の可能性としてアスタリスクを追加したかった

python myPythonScript.py -i folder/*

最初にアクセスしたときにオプション -i の引数を出力すると、

folder/firstFileInFolder.txt

しかし、スクリプトを呼び出すと

python myPythonScript.py -i someFolder/someFile,folder/*

それはうまく動作します。なぜpythonがそのように振る舞うのか、誰かが考えを持っていますか?

4

2 に答える 2

1

このスクリプトを実行してみてください

import sys

for arg in sys.argv:
    print arg

python script.py *

シェルは、Python が認識する前にアスタリスクを展開します。

于 2012-08-28T06:46:26.427 に答える
0

コメントで述べたように、シェルはコンマで区切られていない場合のアスタリスクを拡張しています。2番目の例のように、ユーザーがファイル名の一部としてアスタリスクを指定できることがわかっている場合は、globモジュールを使用してPythonにパス拡張を実行させることができます。

from glob import glob
glob('*')

シェルまたはPythonのいずれかがアスタリスク拡張を実行できるようにするコードは、次のようになります。

import glob
file_list = []
for pattern in sys.argv[1:]:
    file_list.extend(glob.glob(pattern))

あなたの場合、区切り文字としてコンマを使用すると、ファイル名の一部としてコンマを使用できなくなります。

于 2012-08-28T09:59:43.400 に答える