16

私はこのようなことをしたい:

c:\data\> python myscript.py *.csv

ディレクトリ内のすべての .csv ファイルを Python スクリプトに渡します (などをsys.argv含む["file1.csv", "file2.csv"])。

しかし、ワイルドカードが展開されていないことを示すsys.argv受信だけ["*.csv"]なので、これは機能しません。

これを行う簡単な方法があるように感じますが、Googleで見つけることができません。何か案は?

4

3 に答える 3

24

glob モジュールを使用すると、特定のシェルの動作に依存しなくなります (シェルが引数を展開しないことに依存しますが、少なくともワイルドカードをエスケープすることで、Unix でこれを実現できます)。 :-) )。

from glob import glob
filelist = glob('*.csv') #You can pass the sys.argv argument
于 2009-01-01T23:15:46.487 に答える
16

Unix では、シェルがワイルドカードを展開するため、プログラムは展開されたファイル名のリストを取得します。Windows はこれを行いません。シェルはワイルドカードをプログラムに直接渡しますが、プログラムはワイルドカード自体を展開する必要があります。

Vinko の言うとおりです。glob モジュールがその役割を果たします。

import glob, sys

for arg in glob.glob(sys.argv[1]):
    print "Arg:", arg
于 2009-01-01T23:19:50.610 に答える