Wie machen sys.argv-Argumente optional? (Python)

8

sys.argv verwendet beim Ausführen eines Programms Argumente in der Shell-Befehlszeile. Wie mache ich diese Argumente optional?

Ich weiß, dass ich try - except verwenden kann. Dies zwingt Sie jedoch, entweder keine zusätzlichen Argumente oder alle zusätzlichen Argumente einzufügen, es sei denn, Sie verschachteln mehr try - except , wodurch der Code viel weniger lesbar aussieht.

Bearbeiten

Angenommen, ich möchte die folgende Funktionalität, wie implementiere ich das?

%Vor%

Dieses Argument add (und nicht --add ) ist optional, so dass

%Vor%

führt das Programm nur normal aus.

    
Bentley4 07.08.2012, 20:21
quelle

5 Antworten

2

plac ist eine Alternative zu den Standard-Bibliotheksmodulen, die in den anderen Antworten angegeben sind. Es ermöglicht, Befehlszeilenargumente über Anmerkungen zu definieren. In der Dokumentation wird in Beispiel 8 die Syntax optionaler Argumente veranschaulicht:

%Vor%

Argparse Beispiel:

%Vor%

Beachten Sie, dass das optionale Argument als "--add" bereitgestellt wird, während Unterbefehle als "add" bereitgestellt werden. Es gibt eine Unterbefehlsimplementierung in argparse .

    
Nicolas Barbey 08.08.2012, 13:13
quelle
9

Sie können mehr High-Level-Bibliotheken verwenden: argparse , optparse , opster . Alle unterstützen optionale Argumente.

    
Fedor Gogolev 07.08.2012 20:22
quelle
4

BEARBEITEN um deine Bearbeitung zu bearbeiten,

%Vor%

alle folgenden arbeiten mit diesem

%Vor%

Wenn es den Vorteil hat, vor jedem Namen 'hinzufügen' zu müssen, können Sie das tun, wenn nach dem Hinzufügen von Namen noch weitere Argumente gesucht werden sollen. Wenn Sie mehrere Namen mit python program.py add Peter Jane übergeben möchten, können Sie dies mit einer ziemlich einfachen Änderung tun

%Vor%

ORIGINAL

Es scheint, als ob Sie mit etwas wie opparse besser dran wären. Da sys.argv jedoch eine Liste ist, können Sie deren Länge überprüfen.

%Vor%

und verwenden Sie dann arg1 und arg2 als Ihre "optionalen" Befehlszeilenargumente. Dadurch können Sie 1, 2 oder 0 Befehlszeilenargumente übergeben (tatsächlich können Sie mehr als 2 übergeben und sie werden ignoriert). Dies setzt auch voraus, dass die Argumente eine bekannte Reihenfolge haben. Wenn Sie Flags wie -a gefolgt von einem Wert verwenden möchten, schauen Sie in optparse Ссылка

    
Ryan Haining 07.08.2012 21:13
quelle
2

Sie sollten einen Befehlszeilenparser wie getopt oder argparse verwenden. Mit diesen Optionen können Sie Optionen definieren, die optional sind und über Standardwerte verfügen.

    
Keith 07.08.2012 20:24
quelle
0

Sie finden die Antwort mit argparse hier hier . Lösungen, die getopt oder opster verwenden, werden stattdessen als beliebteste Antwort gewählt.

    
Bentley4 08.08.2012 12:53
quelle