Question

Je veux faire quelque chose comme ça:

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

et transmettez tous les fichiers .csv du répertoire à mon script python (tel que sys.argv contient [" fichier1.csv "," fichier2.csv "] , etc.)

Mais sys.argv ne reçoit que [" *. csv "] indiquant que le caractère générique n'a pas été étendu, donc cela ne fonctionne pas.

Je pense qu'il existe un moyen simple de le faire, mais je ne le trouve pas sur Google. Des idées?

Était-ce utile?

La solution

Vous pouvez utiliser le module glob pour ne pas dépendre du comportement d'un shell particulier (vous dépendez toujours du shell ne développant pas les arguments, mais vous pouvez au moins que cela se produise sous Unix en échapper aux caractères génériques :-)).

from glob import glob
filelist = glob('*.csv') #You can pass the sys.argv argument

Autres conseils

Sous Unix, le shell développe les caractères génériques, de sorte que les programmes obtiennent la liste étendue des noms de fichiers. Windows ne le fait pas: le shell transmet les caractères génériques directement au programme, qui doit les développer lui-même.

Vinko a raison: le module glob fait le travail:

import glob, sys

for arg in glob.glob(sys.argv[1]):
    print "Arg:", arg
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top