Beschreibt die Verwendung von argparse zum Parsen von Unterbefehlen in Python 3. Ich bin jedoch nicht mit Python vertraut, daher gibt es möglicherweise einen besseren Weg. Ich möchte nur die Standardbibliothek verwenden, aber argparse ist zu hoch entwickelt und schwierig zu verwenden ...
Die Punkte sind wie folgt.
parser
mit parser.add_subparsers ()
parser_〇〇.set_defaults (Handler = Funktionsname)
, um die Verarbeitung für jeden Unterbefehl an die Handlerfunktion zu übertragen.git.py
#!/usr/bin/env python
# coding: utf-8
import argparse
#Eine Rückruffunktion, die die tatsächliche Verarbeitung eines Unterbefehls beschreibt
def command_add(args):
print(args)
def command_commit(args):
print(args)
def command_help(args):
print(parser.parse_args([args.command, '--help']))
#Erstellen Sie einen Befehlszeilenparser
parser = argparse.ArgumentParser(description='Fake git command')
subparsers = parser.add_subparsers()
#Erstellen Sie einen Parser für den Befehl add
parser_add = subparsers.add_parser('add', help='see `add -h`')
parser_add.add_argument('-A', '--all', action='store_true', help='all files')
parser_add.set_defaults(handler=command_add)
#Erstellen Sie einen Parser für den Commit-Befehl
parser_commit = subparsers.add_parser('commit', help='see `commit -h`')
parser_commit.add_argument('-m', metavar='msg', help='commit message')
parser_commit.set_defaults(handler=command_commit)
#Erstellen Sie einen Parser für den Hilfebefehl
parser_help = subparsers.add_parser('help', help='see `help -h`')
parser_help.add_argument('command', help='command name which help is shown')
parser_help.set_defaults(handler=command_help)
#Analysieren Sie Befehlszeilenargumente und führen Sie die entsprechende Handlerfunktion aus
args = parser.parse_args()
if hasattr(args, 'handler'):
args.handler(args)
else:
#Holen Sie sich Hilfe für unbekannte Unterbefehle
parser.print_help()
Wenn Sie keinen Unterbefehl angeben, wird die Hilfemeldung der obersten Ebene angezeigt.
$ python git.py
usage: git.py [-h] {commit,add,help} ...
Fake git command
positional arguments:
{commit,add,help}
commit see `commit -h`
add see `add -h`
help see `help -h`
optional arguments:
-h, --help show this help message and exit
Wenn Sie einem Unterbefehl die Option "-h" hinzufügen, wird eine Hilfemeldung auf Unterbefehlsebene angezeigt. Dies liegt daran, dass Argparse einen guten Job macht.
$ python git.py commit -h
usage: git.py commit [-h] [-m msg]
optional arguments:
-h, --help show this help message and exit
-m msg commit message
Gleiches gilt für die Verwendung des Unterbefehls "help". Das liegt daran, dass ich es selbst implementiert habe.
$ python git.py help commit
usage: git.py commit [-h] [-m msg]
optional arguments:
-h, --help show this help message and exit
-m msg commit message
Schließlich funktionieren auch die Unterbefehle "Hinzufügen" und "Festschreiben" wie erwartet.
$ python git.py add
Namespace(all=False, handler=<function command_add at 0x102973c80>)
$ python git.py commit -m "message"
Namespace(handler=<function command_commit at 0x10510e7b8>, m='message')
Recommended Posts