Como eu iterar sobre todas as linhas de arquivos passados ??na linha de comando?
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?
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