J'écris souvent des commandes qui fonctionnent sur la ligne de commande en Python, mais parfois je veux écrire des sous-commandes comme git
.
Pour git
$ git commit -m "test"
Ce commit
est une sous-commande.
Créez cette sous-commande.
Si vous souhaitez analyser les arguments de commande en Python, utilisez le module ** argparse **.
15.4. argparse
- Options de ligne de commande, arguments, analyseurs de sous-commandes - http://docs.python.jp/2.7/library/argparse.html?highlight=argparse#argparse
Normalement, vous importez la classe ** ArgumentParser ** depuis le module argparse. Définissez ensuite l'analyseur et ajoutez des options.
Temps normal :
normal.py
from argparse import argumentParser
parser = ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
Vous devez imbriquer des analyseurs pour créer des sous-commandes. ** Vous pouvez définir des sous-commandes en installant un autre analyseur dans l'analyseur. ** **
subcmd.py
>>> from argparse import ArgumentParser
>>>
>>> # create the top-level parser
>>> parser = ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo', action='store_true', help='foo help')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>>
>>> # create the parser for the "a" command
>>> parser_a = subparsers.add_parser('a', help='a help')
>>> parser_a.add_argument('bar', type=int, help='bar help')
>>>
>>> # create the parser for the "b" command
>>> parser_b = subparsers.add_parser('b', help='b help')
>>> parser_b.add_argument('--baz', choices='XYZ', help='baz help')
>>>
>>> # parse some arg lists
>>> parser.parse_args(['a', '12'])
Namespace(bar=12, foo=False)
>>> parser.parse_args(['--foo', 'b', '--baz', 'Z'])
Namespace(baz='Z', foo=True)
Créez un wrapper pour le sous-analyseur avec la méthode `` parser.add_subparsers ''
subparsers = parser.add_subparsers(help='sub-command help')
Créez un sous-analyseur à partir d'un wrapper.
parser_a = subparsers.add_parser('a', help='a help')
Donnez des arguments au sous-analyseur.
parser_a.add_argument('bar', type=int, help='bar help')
En passant, dans le cas de l'exemple ci-dessus, le message d'aide ressemble à ceci.
usage: PROG [-h] [--foo] {a,b} ...
positional arguments:
{a,b} sub-command help
a a help
b b help
optional arguments:
-h, --help show this help message and exit
--foo foo help
Vous pouvez maintenant créer des sous-commandes.
Recommended Posts