¿Cómo puedo iterar sobre todas las líneas de los archivos pasados en la línea de comandos?
Pregunta
Yo suelo hacer esto en Perl:
whatever.pl
while(<>) {
#do whatever;
}
entonces cat foo.txt | whatever.pl
Ahora, yo quiero hacer esto en Python. He intentado sys.stdin
pero no tengo ni idea de cómo hacerlo, como he hecho en Perl. ¿Cómo puedo leer la entrada?
Solución
Prueba esto:
import fileinput
for line in fileinput.input():
process(line)
Otros consejos
import sys
def main():
for line in sys.stdin:
print line
if __name__=='__main__':
sys.exit(main())
Algo como esto:
import sys
for line in sys.stdin:
# whatever
import sys
for line in sys.stdin:
# do stuff w/line
No me gusta para vencer a un caballo muerto, pero puedo sugerir el uso de una función pura?
import sys
def main(stdin):
for line in stdin:
print("You said: " + line.strip())
if __name__ == "__main__":
main(sys.stdin)
Este enfoque es agradable porque principal es puramente dependiente en su entrada y unidad puede probarlo con cualquier cosa que obedece el paradigma de flujo de entrada de línea delimitado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow