Pergunta

Eu escrevo um monte de pequenos scripts que processar arquivos em uma base linha por linha. Em Perl, eu uso

while (<>) {
    do stuff;
}

Isso é útil porque não importa onde a entrada vem de (um arquivo ou stdin).

Em Python Eu uso este

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

o que não parece muito elegante. Existe uma linguagem Python que lida facilmente com arquivo / entrada stdin?

Foi útil?

Solução

O módulo FileInput na biblioteca padrão é apenas o que você quer:

import fileinput

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

Outras dicas

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

Este itera sobre as linhas de todos os arquivos listados no sys.argv [1:]., Inadimplentes para sys.stdin se a lista estiver vazia

FileInput padrão para stdin, então tornaria um pouco mais conciso.

Se você faz um monte de coisas de linha de comando, no entanto, este tubulação corte é muito arrumado.

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