Línea de comando de Python ‘secuencia de entrada de archivo’

Soy bastante nuevo en Python proveniente de C / C ++, me preguntaba cómo obtendría mi ‘main.py’ para reconstruir / usar el imput dado desde un shell bash como:

python main.py <text.txt

(el archivo está en texto plano)

Usaría argparse para crear un analizador de opciones que acepte una ruta de archivo y la abra.

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, puede reemplazarse con argparse.FileType('o') que acepta bufsize y mode args (consulte http://docs.python.org/dev/library/argparse.html #tipo )

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

Leer de sys.stdin :

 import sys sys.stdin.read() 

Al ser un objeto similar a un archivo , puede usar sus funciones de lectura o simplemente iterar sobre las líneas de entrada:

 for line in sys.stdin: print line 

Usar el 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 admitir stdin, también puede leer archivos enumerados como argumentos.