Como eu iterar sobre todas as linhas de arquivos passados ??na linha de comando?

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

  •  23-08-2019
  •  | 
  •  

Pergunta

Eu costumo fazer isso em Perl:

whatever.pl

while(<>) {
    #do whatever;
}

então cat foo.txt | whatever.pl

Agora, eu quero fazer isso em Python. Tentei sys.stdin mas não tenho idéia de como fazer como eu fiz em Perl. Como posso ler a entrada?

Foi útil?

Solução

Tente isto:

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

Outras dicas

import sys
def main():
    for line in sys.stdin:
        print line
if __name__=='__main__':
    sys.exit(main())

Algo parecido com isto:

import sys

for line in sys.stdin:
    # whatever
import sys

for line in sys.stdin:
    # do stuff w/line

Eu odeio para bater um cavalo morto, mas posso sugerir usando uma função pura?

import sys

def main(stdin):
  for line in stdin:
    print("You said: " + line.strip())

if __name__ == "__main__":
  main(sys.stdin)

Esta abordagem é bom porque principal é dependente exclusivamente em sua entrada e você pode teste de unidade com tudo o que obedece ao delimitado-line fluxo de entrada de paradigma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top