Wie kann ich bei der Verwendung von argparse entscheiden, ob etwas ein Positionsargument, ein optionales Argument oder ein Unterbefehl sein soll?Gibt es Regeln für die Verwendung von Argparse?
Antwort
Ein Position Argument ist in der Regel erforderlich. Zum Beispiel, wenn Ihr Programm immer eine Datei zum Lesen übergeben werden muss, wäre diese Datei ein positionelles Argument.
Ein optionales Argument ist, nicht überraschend, optional. Dies kann ein Argument sein, das einen vernünftigen Standard haben kann (dh Ihr Programm läuft standardmäßig auf Port 8080
, kann aber andere Ports akzeptieren) oder es könnte ein Flag sein, um optionales Verhalten einzuschalten (zB ein verbose
Flag).
Ein Subparser wird normalerweise verwendet, wenn Sie einem einzelnen Skript eine ganze Reihe verschiedener Befehle hinzufügen möchten. Vielleicht kann Ihr Skript Dateien lesen oder schreiben, und die Operationen read
und write
erwarten verschiedene Flags, die sich nicht überschneiden. In diesem Fall wäre es sinnvoll, einen Subparser für die Operation read
und einen Subparser für die Operation write
zu haben, um das Parsen dieser Flags zu vereinfachen.
Die meisten einfachen Programme wollen mit positionellen und optionalen Argumenten bleiben: Sie werden normalerweise wissen, wann Sie tatsächlich einen Subparser verwenden müssen.
Hier ist eine (sehr gekünstelt) Beispielprogramm, das alle drei verwendet:
import argparse
def parse_args():
p = argparse.ArgumentParser()
p.add_argument("filename", help="Filename to interact with")
p.add_argument("-v", "--verbose", action="store_true", help="Turn on verbose mode")
subparsers = p.add_subparsers(title="Commands", dest="command")
read_p = subparsers.add_parser("read", help="read from FILENAME")
load_p = subparsers.add_parser("load", help="load from FILENAME")
return p.parse_args()
if __name__ == "__main__":
args = parse_args()
Und hier ist seine Hilfetext:
usage: foo.py [-h] [-v] filename {read,load} ...
positional arguments:
filename Filename to interact with
optional arguments:
-h, --help show this help message and exit
-v, --verbose Turn on verbose mode
Commands:
{read,load}
read read from FILENAME
load load from FILENAME
- 1. Gibt es Regeln für OOP?
- 2. Gibt es Regeln für gültige Maven-Entwicklerrollen?
- 3. Regeln für die Verwendung von Referenzen in C++
- 4. Gibt es irgendwelche Regeln bezüglich der Verwendung von beliebigen Ganzzahl-IDs für Android-Kontrollen?
- 5. Regeln für die Verwendung von Rich-Text-Feldern?
- 6. Regeln für die Verwendung von Update-Sites in Eclipse?
- 7. Welche Alternativen gibt es für die Verwendung von global.asax?
- 8. Python: Gibt es einen Nachteil für die Verwendung von Fehlerbehandlung?
- 9. Gibt es eine Abhilfe „Verweigern“ Regeln für Google Cloud Firewall
- 10. Regeln (?) Von Parens/Klammern Verwendung in Perl
- 11. Gibt es legitime Verwendung für Objektkonstruktor?
- 12. Gibt es irgendwelche Verwendung für lokale Funktionsdeklarationen?
- 13. Array-Typ - Regeln für die Zuordnung/Verwendung als Funktionsparameter
- 14. ANTLR4: Die Verwendung von nicht-ASCII-Zeichen in Token Regeln
- 15. Gibt es Kosten für die Verwendung des Push Notification Service?
- 16. Python Unittest für argparse
- 17. Wie lauten die Regeln für die Benennung von AS3-Klassen?
- 18. Gibt es ein praktisches Beispiel für die Verwendung von Attributen für Methodenparameter in .NET?
- 19. Äquivalent von Julias ArgParse range_teser in Pythons argparse?
- 20. Welche Regeln gelten für die Verknüpfung von Übersetzungseinheiten in C11?
- 21. Gibt es einen Vorteil für die Verwendung von "1" anstelle von "2"?
- 22. Gibt es einen Leistungseinbruch für die Verwendung von MDF SQL Server-Dateien anstelle von "Datenbank"?
- 23. Emoji-Verwendung in UILabel- und Appstore-Regeln
- 24. Gibt es ein Maximum für die Ausgabe von PDO :: debugDumpParams?
- 25. argparse optionaler Wert für Argument
- 26. Gibt es eine Verwendung für THeaderControl in Delphi
- 27. Welche Regeln gelten für die MIME-Grenze?
- 28. Welche Regeln werden für die Typinferenz bei der Verwendung von Generics verwendet?
- 29. Regeln für die in Header-Dateien Aufnahme bei Verwendung von Typ in typedef
- 30. Regeln für die implizite Konvertierung von Template-Argumente
Zuerst Sie entscheiden, was Sie wollen. Als nächstes verwenden Sie 'argparse'. Es hängt alles von dir ab. – zondo
Gibt es Regeln oder Best Practices oder etwas? – polka
Verwenden Sie Positionsargumente für Dinge, die erforderlich sind. Verwenden Sie optionale Argumente für Dinge, die nicht benötigt werden. Leider weiß ich nicht, was du mit "Unterbefehl" meinst. – zondo