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
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