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.
Angenommen, ich möchte die folgende Funktionalität, wie implementiere ich das?
%Vor% Dieses Argument add
(und nicht --add
) ist optional, so dass
führt das Programm nur normal aus.
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 .
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
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.
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 Ссылка
Tags und Links python command-line-arguments sys