argparse note

Une note sur argparse, l'outil d'analyse de ligne de commande Python

référence

Manuel, Tutoriel

Cas d'utilisation typique

import argparse

def main():
    parser = argparse.ArgumentParser(
        formatter_class=argparse.RawDescriptionHelpFormatter,
        description="Concatenates a person's files",
        epilog='''Notices:
    1. You need an account first.
    2. Files should exist.
'''
    )
    parser.add_argument(
        '-o', '--outfile', default='foo.txt', help='Output file name')
    parser.add_argument(
        '-q', '--quiet', action='store_true', dest='qFlag',
        help='No messages to console')
    parser.add_argument(
        '-r', '--repeat', type=int, default=1, help='Repeat count')
    parser.add_argument(
        '-m', '--mode', required=True, choices=['t', 'b'], help='Mode')
    parser.add_argument('person', help='Person name')
        # mandatory positional argument
    parser.add_argument('infile', nargs='*', help='Input file name')
        # '+' can also be used for nargs
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument('--private', action='store_true')
    group.add_argument('--public',  action='store_true')
    args = parser.parse_args()

    print(f'outfile = {args.outfile}')            # long name is prefered
    print(f'quiet = {args.qFlag}')                # dest='qFlag'
    print(f'repeat count = {args.repeat * 100}')  # type=int
    print(f'# of infiles = {len(args.infile)}')   # stored as a list

main()

Exemple d'exécution

$ ./a.py -m t --private uid a b c
outfile = foo.txt
quiet = False
repeat count = 100
# of infiles = 3

point

Recommended Posts

argparse note
Note
argparse
Note
Note
Django Note 4
note de pyenv
argparse partie 1
(Note) Soyez prudent avec python argparse
Django Note 5
Remarque: Python
Note d'Ansible
Note de Python
Django Note 1
note de direnv
Django Note 3
Django Note 2
[Note] RepresenterError
[Note] Redimensionnement de l'image
Note d'apprentissage Python_002
Remarque: décorateur Python
Note de programmation Python
[Python] Note d'apprentissage 1
Note de Kinesis Firehose
Note d'apprentissage Python_004
[Note] À propos de Tensorflow
PyData.Osaka Meetup # 2 Mémo
Note d'apprentissage Python_003
Note tout à fait personnelle
Note personnelle de Flask # 2
modèle argparse python
Note d'étude Jupyter_002
Remarque sur les préférences de TensFlow
[Remarque] openCV + python
Remarque sur awk
Juste une note
Remarque sur les préférences de PyCharm
Remarque: Notation d'inclusion de liste
Note du débutant Python
Note personnelle de Flask # 1
Note d'étude Jupyter_003
Note d'étude Jupyter_007
[Note] les pandas se désempilent
Note d'étude Jupyter_005