Passerer argumenter med jokertegn til et Python-skript

stemmer
14

Jeg ønsker å gjøre noe sånt som dette:

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

og bestå alle CSV-filene i mappen til min Python-skript (slik som sys.argvinneholder [file1.csv, file2.csv], etc.)

Men sys.argvbare mottar [*.csv]indikerer at wildcard ikke ble utvidet, slik at dette ikke fungerer.

Jeg føler at det er en enkel måte å gjøre dette, men kan ikke finne det på Google. Noen ideer?

Publisert på 01/01/2009 klokken 23:08
kilden bruker
På andre språk...                            


2 svar

stemmer
23

Du kan bruke glob modulen, på den måten vil du ikke avhengig av atferden til en bestemt skall (vel, du fortsatt er avhengig av skallet ikke utvide argumenter, men i det minste kan du få dette til å skje i Unix ved unnslippe jokertegn :-)).

from glob import glob
filelist = glob('*.csv') #You can pass the sys.argv argument
Svarte 01/01/2009 kl. 23:15
kilden bruker

stemmer
13

I Unix, utvider skallet jokertegn, slik at programmene får utvidet liste over filnavn. Windows ikke gjør dette: skallet passerer jokertegn direkte til programmet, som har til å utvide dem selv.

Vinko er rett: glob modulen gjør jobben:

import glob, sys

for arg in glob.glob(sys.argv[1]):
    print "Arg:", arg
Svarte 01/01/2009 kl. 23:19
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more