Continuamente escrevendo saída de terminal para arquivo de texto

2

Estou executando um pequeno aplicativo cli python no terminal. Ele faz um loop infinito e envia o texto para o terminal. Eu quero a saída do texto para um arquivo, e eu posso fazer isso com o seguinte comando python [my cli app] >> log.txt , mas eu tenho que quebrar o loop antes que o arquivo seja fechado e efetivamente salvo. Existe uma maneira de ler o conteúdo mais recente do arquivo de texto enquanto o loop continua sendo executado em segundo plano?

SO BASICALLY:

~ $  [INFINITE LOOP] >> log.txt

então enquanto isso está funcionando para sempre, eu quero acessar log.txt . No momento, ele apenas salva a saída do terminal no arquivo uma vez que eu paro o comando com Ctrl + C .

Espero que isso explique

    
por John Kahts 22.07.2015 / 02:04

2 respostas

1

simulation.py:

(saída 10 linhas a cada segundo)

#!/usr/bin/env python
import time

i=0
while True:
    print("{} what up {}".format(i,i%10))
    if i%10==9:
        time.sleep(1)
    i+=1

Em um terminal:

$ stdbuf -oL python simulation.py >> log.txt

Em outro:

$ tail -f log.txt #10 new lines every second
    
por 22.07.2015 / 02:57
0

Trabalhando com a resposta do PSkocik:

em vez de

$ stdbuf -oL python simulation.py >> log.txt

faça

$ stdbuf -oL python simulation.py | tee log.txt

Dessa forma, você poderá ver a saída original do programa também na mesma tela.

    
por 04.04.2018 / 14:08