Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 26/04/2013, à 10:32

djelko

[Résolu] Python, probleme compliation terminal

Bonjour

je suis en train de faire un "hyperterminal" en python, pour ecrire mes caractères qui arrive je ne peu pas utiliser la fonction print car il y à un retour a la ligne automatique. J'utilise donc la syntaxe suivante :

sys.stdout.write(caractere)

Mon probleme est : Mon programme fonctionne parfaitement sur l'environement de développement IDLE mais lors de l'execution de mon programme sur un terminal lambda (ex gnome-terminal) plus rien ne s'affiche.
Pour faire simple : sur IDLE le code sys.stdout.write(caractere) fonctionne trés bien. Sur un terminal cette syntaxe au sein de mon programme ne fonctionne pas !

ETRANGE : quand je fait un programme de test tout simple exectuté dans un terminal ca fonctionne, exemple :

toto='coucou'
sys.stdout.write(toto)

>>>coucou

Si quelqu'un à une idée car ca fait deja plusieur jours que je cherche sur le net et pas de réponse sad

Dernière modification par djelko (Le 29/04/2013, à 07:59)

Hors ligne

#2 Le 26/04/2013, à 10:37

pingouinux

Re : [Résolu] Python, probleme compliation terminal

Bonjour,
Essaye :

sys.stdout.write(caractere)
sys.stdout.flush()

Ajouté :
Pour ne pas avoir de retour à la ligne, en python2

print(caractere),

en python3

print(caractere,end=' ')

Dernière modification par pingouinux (Le 26/04/2013, à 10:45)

Hors ligne

#3 Le 26/04/2013, à 10:38

djelko

Re : [Résolu] Python, probleme compliation terminal

merci, j'essaye sa tou de suite wink

Hors ligne

#4 Le 26/04/2013, à 10:52

djelko

Re : [Résolu] Python, probleme compliation terminal

Je viens d'essayer et il n'y a rien à faire ca ne fonctionne pas non plus .... sad

Hors ligne

#5 Le 26/04/2013, à 12:28

djelko

Re : [Résolu] Python, probleme compliation terminal

Toute mes plus plates EXCUSES... le faite de rejouter flush() fait bien fonctionner !
MERCI !!! big_smile

Hors ligne

#6 Le 26/04/2013, à 12:35

pingouinux

Re : [Résolu] Python, probleme compliation terminal

Ça m'étonnait un peu…
Les écritures sur stdout sont stockées dans un tampon (buffer). Celui-ci est vidé lorsqu'il est plein, en fin de programme, ou lors de l'appel de flush.

Hors ligne

#7 Le 29/04/2013, à 07:56

djelko

Re : [Résolu] Python, probleme compliation terminal

ce qui est quand meme bizzar c'est pourquoi cela fonctionne sur IDLE et non sur un terminal normal quand on ne met pas flush ?

Hors ligne

#8 Le 29/04/2013, à 08:05

pingouinux

Re : [Résolu] Python, probleme compliation terminal

Je suppose que, IDLE étant un outil de développement, le tampon est vidé systématiquement. Il en est de même quand on lance python dans un terminal.

Hors ligne

#9 Le 29/04/2013, à 08:14

djelko

Re : [Résolu] Python, probleme compliation terminal

oui mais lors de l'execution de mon prog sur un terminal,

python mon_prog.py

il y à normalement la meme execution car idle comme le terminal utilise GCC pour compliller ?

Hors ligne

#10 Le 29/04/2013, à 08:54

elendil

Re : [Résolu] Python, probleme compliation terminal

Il y a une chose qui me dérange dans ce que tu racontes : "python compilation"
Python ne compile pas au sens que l'on entend avec du C,C++ et autre.

Il fait effectivement une précompilation (les fichiers .pyc) lorsque l'on importe un module.

Mais pour une utilisation courante : python mon_prog.py il n'y a pas de compilation !
Python est un langage de script comme le Bash il interprète ligne par ligne sans compiler.

La gestion du buffer peut être différente entre l'IDLE et le terminal. Dans tout les cas si tu ne "flush" pas le buffer ne se videra pas tout seul avant la fin du programme.
En fait il pour être plus précis il me semble que le buffer est géré en interne par python et peut donc être vidé avant la fin du programme mais c'est python qui décide quand "il a le temps et l'envi" de le faire.

Vu ce que tu racontes peut-être que ton IDLE gère le buffer différemment ???

Bien en tendue il y a la même chose avec l'écriture dans un fichier qui dépend du buffer...

(édit : précision)

Dernière modification par elendil (Le 29/04/2013, à 10:51)

Hors ligne

#11 Le 29/04/2013, à 09:00

djelko

Re : [Résolu] Python, probleme compliation terminal

ok je comprend mieux maintenant, j'ai toujours fait que du langage compilé jusqu'a aujourd'hui c'est pour ça que j'ai un peut de mal avec le python ... merci encore pour ces expliquations wink

Hors ligne

Haut de page ↑