Передача аргументов с помощью подстановочных знаков на Python script
Я хочу сделать что-то вроде этого:
c:\data\> python myscript.py *.csv
и передать все .csv файлы в каталог на мой python script (такой, что sys.argv
содержит ["file1.csv", "file2.csv"]
и т.д.)
Но sys.argv
просто получает ["*.csv"]
, указывающий, что подстановочный знак не был расширен, поэтому это не работает.
Я чувствую, что есть простой способ сделать это, но не могу найти его в Google. Любые идеи?
Ответы
Ответ 1
Вы можете использовать модуль glob, таким образом, вы не будете зависеть от поведения конкретной оболочки (ну, вы все равно полагаетесь на оболочку, не расширяющую аргументы, но по крайней мере вы можете получить это в Unix избегая подстановочных знаков:-)).
from glob import glob
filelist = glob('*.csv') #You can pass the sys.argv argument
Ответ 2
В Unix оболочка расширяет подстановочные знаки, поэтому программы получают расширенный список имен файлов. Windows не делает этого: оболочка передает подстановочные знаки непосредственно в программу, которая должна сама их расширять.
Vinko прав: модуль glob выполняет задание:
import glob, sys
for arg in glob.glob(sys.argv[1]):
print "Arg:", arg