Ich schreibe ein Python-Skript, es benötigt entweder 3 Positionsargumente (Name, Datum, Ort, sagen wir mal) oder 1 Argument, das eine Setup-Datei ist, die diese Information enthält.Python-Skript mit 1 oder 3 Positionsargumenten
Ich weiß, dass ich kann argparse
verwenden und ich kann die Positionsargumente optional mit machen:
parser.add_argument('name_OR_setupFile')
parser.add_argument('date', nargs='?')
parser.add_argument('location', nargs='?')
und dann kann ich Fehler-Check, um sicherzustellen, dass der Benutzer nicht nichts getan dumm
Das Problem ist, dass jetzt die Hilfe-Nachricht sehr verwirrend sein wird, weil es unklar ist, was das erste Argument wirklich ist. Ich würde gerne einen Weg, dies als zwei verschiedene add_argument Linien, irgendwie, aber ich bin mir nicht sicher, wie.
Ich weiß auch, dass ich ein --setupFile
Argument verwenden könnte, und machen Sie die drei optional ... aber ich würde es lieber nicht tun, wenn ich nicht muss.
Eine dritte Möglichkeit ist die Verwendung:
parser.add_argument('ARGS', nargs='+', help='ARGS is either of the form setupFile, or name date location')
und dann später Fehlerprüfung ...
ETA zur Klarstellung:
Ich möchte das Skript aufrufen können, entweder mit:
python foo.py setupFile
oder
python foo.py name date location
Ich möchte den Text Hilfe so etwas wie sein:
usage:
foo.py setupFile
foo.py name date location
Können Sie bitte auf mehr klar sein, was Sie brauchen? Sie können die Hilfemeldung im Aufruf add_argument übergeben? –
FWIW, wenn ich 'usage: foo.py [setupFile] [name date location]' gesehen habe, wäre meine Interpretation des args-Formats _completely_ anders als das, was du beschreibst. – NPE
@ NPE: Guter Punkt. welches format wäre sinnvoll, denkst du? –