¿Cómo puedo iterar sobre todas las líneas de los archivos pasados ​​en la línea de comandos?

StackOverflow https://stackoverflow.com/questions/715277

  •  23-08-2019
  •  | 
  •  

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?

¿Fue útil?

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
scroll top