2009-10-08 3 views

Répondre

13

Le premier élément de sys.argv (sys.argv[0]) est le nom du script en cours d'exécution. Parce que ce nom de script n'est (probablement) pas un argument valide (et ne commence probablement pas avec un - ou -- de toute façon), getopt ne le reconnaît pas en tant qu'argument. En raison de la nature du fonctionnement de getopt, lorsqu'il voit quelque chose qui n'est pas un indicateur de ligne de commande (quelque chose qui ne commence pas par - ou --), il arrête le traitement des options de ligne de commande (et place le reste des arguments dans args), car il suppose que le reste des arguments sont des éléments qui seront traités par le programme (tels que les noms de fichiers ou d'autres arguments "requis").

+0

Je comprends maintenant. Merci! – Geo

6

C'est par conception. Rappelez-vous que sys.argv [0] est le nom du programme en cours d'exécution, et getopt ne le veut pas.

De la documentation:

options de ligne de commande et parse liste des paramètres. args est l'argument liste à analyser, sans la référence au programme en cours d'exécution. Généralement, cela signifie sys.argv [1:]. options est la chaîne de l'option lettres que le script veut reconnaître, avec des options qui nécessitent un argument suivi par deux points (« : »; à savoir, le même format que Unix getopt() utilise).

http://docs.python.org/library/getopt.html