Python equivalente a Perl's while (< >) {& # 8230;}?
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?
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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow