Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/09/2011, à 21:24

®om

[Résolu] Problème avec un "pipe" bash et python

Bonjour,

e n'arrive pas à m'expliquer un comportement. La commande suivante :

(echo bonjour && sleep 5 && echo au revoir) | cat

affiche bien bonjour dans le terminal, attend 5 seconde et affiche au revoir. Le fichier est également rempli correctement.

Tout va bien.

Maintenant, quasiment la même chose, mais en python. Créer un fichier test.py contenant :

#!/usr/bin/env python
import time
print 'bonjour'
time.sleep(5)
print 'au revoir'

et le rendre exécutable :

chmod +x test.py
./test.py

exécute la commande comme il faut, en affichant d'abord bonjour, puis au revoir.

Maintenant :

./test.py | cat

Tout est écrit "à la fin", bonjour n'est pas écrit aussitôt, mais seulement après les 5 secondes.

C'est comme si python détectait qu'il était branché sur un pipe, et adaptait son comportement (la bufferisation).

Comment éviter cela ?

Merci de votre aide.

Dernière modification par ®om (Le 28/09/2011, à 21:31)

Hors ligne

#2 Le 28/09/2011, à 21:27

sputnick

Re : [Résolu] Problème avec un "pipe" bash et python

Ça ressemble à de la bufferisation, voir ce thread http://stackoverflow.com/questions/8816 … he-program


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 28/09/2011, à 21:31

®om

Re : [Résolu] Problème avec un "pipe" bash et python

sputnick a écrit :

Ça ressemble à de la bufferisation, voir ce thread http://stackoverflow.com/questions/8816 … he-program

Ah oui effectivement.

Une solution est alors de lancer le programme avec l'option -u de python. Soit ici :

#!/usr/bin/python -u

Soit en lançant le programme

python -u bonjour.py | cat

Merci ;-)

Hors ligne

#4 Le 29/09/2011, à 11:33

AnsuzPeorth

Re : [Résolu] Problème avec un "pipe" bash et python

Bjr,
Et en faisant un sys.stdout.flush() après les print ?


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne