PYTHON obtener archivos desde la línea de comandos

¿Cómo se obtiene un nombre de archivo desde la línea de comandos cuando ejecuta un código Python? Como si su código abre un archivo y lee la línea, pero el archivo varía cada vez que lo ejecuta, cómo se dice:

python code.py input.txt 

¿Entonces el código analiza “input.txt”? ¿Qué tendrías que hacer en el código Python real? Lo sé, esta es una pregunta bastante vaga, pero no sé cómo explicarlo mejor.

Una gran opción es el módulo de entrada de fileinput , que tomará cualquiera o todos los nombres de archivo de la línea de comandos y luego le dará el contenido a su script como si fuera un archivo grande.

 import fileinput for line in fileinput.input(): process(line) 

Más información aquí .

 import sys filename = sys.argv[-1] 

Esto obtendrá el último argumento en la línea de comandos. Si no se pasan argumentos, será el nombre del script, ya que sys.argv[0] es el nombre del progtwig en ejecución.

Usar argparse es bastante intuitivo:

 import argparse parser = argparse.ArgumentParser() parser.add_argument("--file", "-f", type=str, required=True) args = parser.parse_args() 

Ahora el nombre del archivo se encuentra en:

 args.file 

Solo tienes que ejecutar el progtwig un poco diferente:

 python code.py -f input.txt 

Los parámetros de la línea de comandos están disponibles como una lista a través de la lista argv del módulo sys . El primer elemento de la lista es el nombre del progtwig ( sys.argv[0] ). Los elementos restantes son los parámetros de línea de comando.

Vea también los módulos getopt , optparse y argparse para un análisis de línea de comandos más complejo.

Además de lo que se menciona en las respuestas ya existentes, existe otra alternativa que se basa en el uso del kit de creación de interfaz de línea de comandos (clic) . Su última versión estable para cuando publiqué esta respuesta es la versión 6 . La documentación oficial tiene ejemplos sobre cómo tratar con archivos y pasarlos como argumentos de línea de comando.

Solo usa el comando básico raw_input

declarar el nombre del archivo de entrada como una cadena

 inFile = "" inFile = raw_input("Enter the input File Name: ") 

Ahora puede abrir el archivo utilizando open(inFile,'w')