2011-06-20 19 views

Respuesta

2

me gustaría utilizar argparse para crear un analizador opción que acepta una ruta de archivo y lo abre.

import argparse 

def main(): 
    parser = argparse.ArgumentParser() 
    parser.add_argument('infile', type='open') 
    args = parser.parse_args() 

    for line in args.infile: 
     print line 

if __name__ == '__main__': 
    main() 

Si type='open' no proporciona suficiente control, que pueden ser sustituidos por argparse.FileType('o') que acepta bufsize y mode args (ver http://docs.python.org/dev/library/argparse.html#type)

EDIT: Mi error. Esto será no compatible con su caso de uso. Esto le permitirá proporcionar una ruta de archivo, pero no canalizar los contenidos del archivo en el proceso. Dejaré esta respuesta aquí ya que podría ser útil como alternativa.

8

Leer de sys.stdin:

import sys 
sys.stdin.read() 

Ser file-like object, puede utilizar sus funciones de lectura o iterar sobre las líneas de entrada simplemente:

for line in sys.stdin: 
    print line 
+0

@walter use 'line = line.rstrip()'. – Keith

6

El uso del módulo fileinput sería más apropiado aquí, y más flexible.

http://docs.python.org/library/fileinput.html

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

Además de apoyar la entrada estándar, sino que también se puede leer de archivos que aparecen como argumentos.

+0

+1 para esto. No había oído hablar de eso. Bonito. –

Cuestiones relacionadas