J'ai créé un script python qui communique avec un serveur Web en utilisant une boucle infinie. Je souhaite enregistrer toutes les données de communication dans un fichier et les surveiller à partir du terminal en même temps. j'ai donc utilisé la commande tee comme celle-ci.
python client.py | tee logfile
cependant, je n'ai rien obtenu du terminal ni du fichier journal. le script python fonctionne correctement. Que se passe-t-il ici? est-ce que je manque quelque chose?
quelques conseils seraient appréciés. Merci d'avance.
sys.stdout.flush()
partir de votre script chaque fois que vous avez connecté une ligne.Réponses:
De
man python
:Donc, ce que vous pouvez faire est:
Ou en utilisant
tee
:la source
script
, qui désactive également la mise en mémoire tampon et fait en plus fonctionner les séquences de contrôle (C-a
, les touches de curseur, etc.): stackoverflow.com/a/39269661/15690 .tee
est vu comme un tuyau (ce qu'il est) et non comme l'hybride: il écrit dans la console. Remarque: le comportement peut également être contrôlé dans un programme python.python -u client.py | tee >> logfile
ne fonctionnerait pas. Le>>
introduirait un autre cas d'écriture en mémoire tampon dans un fichier. C'est ce quitee -a
résout.