Pregunta

Escribo muchos guiones pequeños que procesan archivos línea por línea. En Perl, yo uso

while (<>) {
    do stuff;
}

Esto es útil porque no importa de dónde proviene la entrada (un archivo o una entrada estándar).

En Python uso esto

if len(sys.argv) == 2: # there's a command line argument
    sys.stdin = file(sys.argv[1])
for line in sys.stdin.readlines():
    do stuff

que no parece muy elegante. ¿Hay algún idioma de Python que maneje fácilmente la entrada de archivos / stdin?

¿Fue útil?

Solución

El módulo de entrada de archivo en la biblioteca estándar es justo lo que desea:

import fileinput

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

Otros consejos

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

Esto se repite en las líneas de todos los archivos enumerados en sys.argv [1:], de forma predeterminada en sys.stdin si la lista está vacía.

fileinput de manera predeterminada es estándar, por lo que sería un poco más conciso.

Si haces muchas cosas en la línea de comandos, este piratería es muy limpio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top