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 26/04/2013, à 11: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, à 08:59)


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne

#2 Le 26/04/2013, à 11: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, à 11:45)

Hors ligne

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

djelko

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

merci, j'essaye sa tou de suite wink


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne

#4 Le 26/04/2013, à 11: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


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne

#5 Le 26/04/2013, à 13: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


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne

#6 Le 26/04/2013, à 13: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, à 08: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 ?


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne

#8 Le 29/04/2013, à 09: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, à 09: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 ?


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne

#10 Le 29/04/2013, à 09: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, à 11:51)

Hors ligne

#11 Le 29/04/2013, à 10: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


" Qui ne tente rien n'a rien ! "

Site perso : http://alexandre-schmitt.fr.nf
Robotique Club de l'Ouest : http://rco.fr.nf

Hors ligne