Piping dados periódicos entre scripts Python

2

How to receive data from the environment e.g. bash

Estou tentando iniciar dois scripts Python em bash e canalizar stdout de um deles para stdin do outro. O primeiro script gera um único número a cada segundo.

./script1 | ./script2
./script1 > ~/file &; tail -f ~/file

Eu tentei isso, mas não consigo trabalhar. script1 produz via print do Python, enquanto o script2 é testado com echo "21.11 22.23 33.233" | ./script2 e é conhecido por funcionar.

Se eu terminar script1 de algum tempo e, em seguida, cat ~/file , vejo os dados reais. No entanto, no momento da execução, nenhum dos exemplos acima funciona.

Como faço isso funcionar? Eu gostaria de poder trabalhar com e sem arquivo intermediário.

    
por Vorac 14.01.2014 / 04:45

1 resposta

2

No script python, certifique-se de chamar:

sys.stdout.flush()

depois de print -ing. Você não precisa fazer isso em cada declaração, mas precisa fazer isso em cada grupo de print s que precisa ser processado. ( import sys se ainda não tiver sido feito).

    
por 14.01.2014 / 06:59