2011-08-11 16 views
30

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

python code.py input.txt 

por lo que el código de análisis "entrada.txt"? ¿Qué tendrías que hacer en el código real de Python? Lo sé, esta es una pregunta bastante vaga, pero realmente no sé cómo explicarla mejor.

Respuesta

23
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 en sí, ya que sys.argv[0] es el nombre del programa en ejecución.

37

Una buena opción es el módulo fileinput, que se agarra cualquiera o todos los nombres de archivo desde la línea de comandos, y luego darle el contenido en el guión como si se tratara de un archivo grande.

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

Más información here.

8

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

Ver también los getopt, optparse, y argparse módulos para el análisis de línea de comandos más complejos.

-1

sólo tiene que utilizar el comando básico raw_input

declarar nombre de archivo de entrada como cadena

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

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

+0

No tiene sentido el tema de la pregunta – JPCF

11

Usando argparse es bastante intuitiva:

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 

Sólo tiene que ejecutar el programa de forma un poco diferente:

python code.py -f input.txt 
Cuestiones relacionadas