¿Cómo accedo a los argumentos de la línea de comando? [duplicar]

Resuelto ParisNakitaKejser asked hace 14 años • 11 respuestas

Utilizo Python para crear la configuración de mi proyecto, pero necesito ayuda para obtener los argumentos de la línea de comando.

Probé esto en la terminal:

$python myfile.py var1 var2 var3

En mi archivo Python, quiero usar todas las variables de entrada.

ParisNakitaKejser avatar Oct 27 '10 20:10 ParisNakitaKejser
Aceptado

El tutorial de Python lo explica :

import sys

print(sys.argv)

Más específicamente, si ejecuta python example.py one two three:

>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']
SilentGhost avatar Oct 27 '2010 13:10 SilentGhost

Recomiendo encarecidamente argparseel que viene con Python 2.7 y versiones posteriores.

El argparsemódulo reduce el código repetitivo y hace que su código sea más robusto, porque el módulo maneja todos los casos de uso estándar (incluidos los subcomandos), genera la ayuda y el uso para usted, verifica y desinfecta la entrada del usuario: todas las cosas de las que debe preocuparse cuando están utilizando sys.argvel enfoque. Y es gratis (integrado).

Aquí un pequeño ejemplo:

import argparse

parser = argparse.ArgumentParser("simple_example")
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int)
args = parser.parse_args()
print(args.counter + 1)

y la salida parapython prog.py -h

usage: simple_example [-h] counter
    
positional arguments:
  counter     counter will be increased by 1 and printed.
    
optional arguments:
  -h, --help  show this help message and exit

y el resultado de python prog.py 1Como era de esperar:

2
Michael Dorner avatar Mar 21 '2017 14:03 Michael Dorner

Para obtener solo los argumentos de la línea de comando

(sin incluir el nombre del archivo Python)

import sys

sys.argv[1:]

Es [1:]un segmento que comienza desde el segundo elemento (índice 1) y llega al final de la lista de argumentos. Esto se debe a que el primer elemento es el nombre del archivo Python y queremos eliminarlo.

Ryan M avatar Oct 27 '2010 13:10 Ryan M