Paquete de análisis de parámetros de línea de comandos de Python argparse

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
args = parser.parse_args()
print(args.echo)

Principalmente tres pasos

1. Crea un analizador

parser = argparse.ArgumentParser()

Un  objeto ArgumentParser contiene toda la información necesaria para analizar la línea de comando en tipos de datos de Python.

2. Agregar parámetros

parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')

 La adición de información de argumentos del programa  a un  ArgumentParser se  realiza llamando al método add_argument() .

3. Parámetros de análisis

>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])

ArgumentParser analiza los argumentos  a través  del método parse_args()  .

Documentación oficial:

Tutorial de Argparse — documentación de Python - 3.11.3

argparse — Analizador de opciones de línea de comandos, argumentos y subcomandos — documentación de Python 3.11.3

Error cometido: el nombre del archivo es el mismo que el nombre del paquete. . . Informará el error de que el módulo no existe.

añadir_argumento()

Los parámetros add_argument() se dividen en dos categorías:

1. Parámetros posicionales

Agregue parámetros directamente con comillas dobles "argment_name".

2. Parámetros opcionales Argumentos opcionales

La adición de parámetros se representa mediante "--argment_name".

Con la opción de ayuda, puede ver todos los parámetros.

acción

store: almacenar valores de parámetros, el comportamiento predeterminado.

store_const: utilizado con el parámetro clave const

parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_const', const=42)
parser.parse_args(['--foo'])

Namespace(foo=42)

store_true y store_false: Si se pasa, será True y False en sí mismo, si no se pasa, será al revés

agregar: el valor del parámetro forma una lista

parser = argparse.ArgumentParser()
parser.add_argument('--dataset',
                       action='append',
                       nargs=2,
                       metavar=('DATASET_NAME', 'DATASET_PATH'),
                       required=True,
                       help='')

parser.parse_args('--dataset twitter15 --dataset ./twitter15.json'.split())

Namespace(dataset=['twitter15', './twitter15.json'])

append_const : esto almacena una lista y agrega el valor especificado por el argumento de la palabra clave const a la lista;

parser = argparse.ArgumentParser()
parser.add_argument('--str', dest='types', action='append_const', const=str)
parser.add_argument('--int', dest='types', action='append_const', const=int)
parser.parse_args('--str --int'.split())

Namespace(types=[<class 'str'>, <class 'int'>])

  count: cuenta el número de ocurrencias del parámetro

parser = argparse.ArgumentParser()
parser.add_argument('--verbose', '-v', action='count', default=0)
parser.parse_args(['-vvv'])
Namespace(verbose=3)

nrgs

N: un número entero, las líneas de comando se agrupan en una lista.
'?': Tomará un argumento de la línea de comando, si es posible, y lo generará como un elemento único. Si no hay argumentos de línea de comandos presentes, se generarán los valores en Predeterminados. Tenga en cuenta que para los argumentos opcionales, hay un caso adicional: la cadena de opciones está presente, pero no siguen argumentos de línea de comandos. En este caso, se generará el valor en const .

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='?', const='c', default='d')
parser.add_argument('bar', nargs='?', default='d')
parser.parse_args(['XX', '--foo', 'YY'])
# Namespace(bar='XX', foo='YY') 有值传一个参则单项生成
parser.parse_args(['XX', '--foo'])
# Namespace(bar='XX', foo='c')  存在选择字符foo传参,则赋值const的值
parser.parse_args([])
# Namespace(bar='d', foo='d')  无值传参则则使用默认值


*: indica que se pasaron cero o más parámetros
+: todos los parámetros de la línea de comandos se recopilan en una lista. Informa de un error si al menos un parámetro no existe.

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('foo', nargs='+')
print(parser.parse_args(['a','b']))
# Namespace(foo=['a', 'b'])

constante

Hay dos usos de const
1. action='store_const' o action='append_const 
2. nargs='?' Si el carácter de selección existe pero el parámetro no existe, use const, seguido por defecto.

por defecto

El valor predeterminado si no está asignado, o Ninguno si no hay un valor predeterminado.

tipo

puede ser personalizado

def hyphenated(string):
    return '-'.join([word[:4] for word in string.casefold().split()])

parser = argparse.ArgumentParser()
_ = parser.add_argument('short_title', type=hyphenated)
parser.parse_args(['"The Tale of Two Cities"'])

# Namespace(short_title='"the-tale-of-two-citi')

destino

Configuración del nombre del espacio de nombres

Para argumentos posicionales, dest se proporciona como el primer argumento de la función.

Para las operaciones con argumentos opcionales, el valor de dest se genera tomando la primera cadena de opción larga y eliminando el "--" inicial. Si no se proporciona una cadena de opción larga, dest se derivará de la primera cadena de opción corta eliminando el carácter inicial. Todos los caracteres internos se convertirán en caracteres _ para garantizar que la cadena sea un nombre de propiedad válido.

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--foo-bar', '--foo')
parser.add_argument('-x', '-y')
parser.parse_args('-f 1 -x 2'.split())
# Namespace(foo_bar='1', x='2') 优先选择--后的名字
parser.parse_args('--foo 1 -y 2'.split())
# Namespace(foo_bar='1', x='2') 同样的条件,选择前面一个

parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest='bar')
parser.parse_args('--foo XXX'.split())
Namespace(bar='XXX')

metavar

parser = argparse.ArgumentParser()
parser.add_argument('--foo', metavar='YYY')
parser.add_argument('bar', metavar='XXX')
parser.parse_args('X --foo Y'.split())
Namespace(bar='X', foo='Y')
parser.print_help()
# usage:  [-h] [--foo YYY] XXX

# positional arguments:
# XXX

# options:
#  -h, --help  show this help message and exit
#  --foo YYY

Supongo que te gusta

Origin blog.csdn.net/qq_41458274/article/details/130388568
Recomendado
Clasificación