Affichage console

Le
Pierre Maurette
Bonjour à tous,

Je suis sur mon premier programme en Python. Le but du programme est de
récupérer / redéposer des fichiers sur un dépôt en FTP, du code source
à priori, un parfum de CVS mais simplissime, à usage d'une personne
seule ou d'une équipe extrêmement réduite. Il s'agit de partager du
code source entre des projets différents sur diverses plate-formes.

Et justement j'ai un petit souci cosmétique lié à un comportement
différent entre Windows et Linux/Unix. Dans une boucle de scan du site
distant, je place des:
if self.options.verbose > 0 : print '.',
pour éviter en ligne de commandes l'impression de plantage, pour que ça
gigote un peu. Ça fonctionne exactement conformément à mes attentes
sous XP. Mais sous Linux, très logiquement, ça ne sort la ligne de
points qu'en fin de scan, donc effet nul. J'ai essayé
sys.stdout.write(), le problème est le même. J'admets que c'était
prévisible. J'ai regardé curses, ça me paraît trop contraignant (y
compris en apprentissage) pour un simple détail.
En enlevant la virgule, ça gigote, mais à un point par ligne, ça
scrolle ma console, je ne le souhaite pas.

Sachant que je ne tiens pas particulièrement à la ligne de points, que
je veux simplement que ça remue sans scroller de 50 lignes, que par
exemple une moulinette sur la séquence '/-|' serait parfaite, quelle
solution simple j'ai loupé ?

Merci d'avance,

--
Pierre Maurette
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Damien Wyart
Le #594198
* Pierre Maurette
Et justement j'ai un petit souci cosmétique lié à un comportement
différent entre Windows et Linux/Unix. Dans une boucle de scan du site
distant, je place des:
if self.options.verbose > 0 : print '.',
pour éviter en ligne de commandes l'impression de plantage, pour que
ça gigote un peu. Ça fonctionne exactement conformément à mes attentes
sous XP. Mais sous Linux, très logiquement, ça ne sort la ligne de
points qu'en fin de scan, donc effet nul. J'ai essayé
sys.stdout.write(), le problème est le même.


Appeler la fonction sys.stdout.flush après chaque affichage devrait
résoudre le problème.

--
DW

Pierre Maurette
Le #594197
* Pierre Maurette
Et justement j'ai un petit souci cosmétique lié à un comportement
différent entre Windows et Linux/Unix. Dans une boucle de scan du site
distant, je place des:
if self.options.verbose > 0 : print '.',
pour éviter en ligne de commandes l'impression de plantage, pour que
ça gigote un peu. Ça fonctionne exactement conformément à mes attentes
sous XP. Mais sous Linux, très logiquement, ça ne sort la ligne de
points qu'en fin de scan, donc effet nul. J'ai essayé
sys.stdout.write(), le problème est le même.


Appeler la fonction sys.stdout.flush après chaque affichage devrait
résoudre le problème.


Merci ! Bien entendu, ça fonctionne. Tant après un print qu'après un
sys.stdout.write. Il me semble que j'avais cherché dans la doc dans ce
sens, je connais le fflush() du C. J'avais dû passer à coté.

--
Pierre Maurette


Damien Wyart
Le #594017
Appeler la fonction sys.stdout.flush après chaque affichage devrait
résoudre le problème.



* Pierre Maurette
Merci ! Bien entendu, ça fonctionne. Tant après un print qu'après un
sys.stdout.write.


Oui, print travaille en interne sur stdout, il fait juste quelques
traitements supplémentaires par rapport à un appel direct de write sur
stdout.

--
DW


jean-michel bain-cornu
Le #594015
Bonjour,
Je suis sur mon premier programme en Python. Le but du programme est de
récupérer / redéposer des fichiers sur un dépôt en FTP, du code source à
priori, un parfum de CVS mais simplissime, à usage d'une personne seule
ou d'une équipe extrêmement réduite. Il s'agit de partager du code
source entre des projets différents sur diverses plate-formes.
Par curiosité, as-tu regardé subversion ?

C'est exactement ce que ça fait, c'est plus facile à utiliser que CVS,
et ça se manipule très bien en python.
Mais peut-être n'as-tu pas accès à ton serveur ?

jean-michel bain-cornu
Le #594014
Mais peut-être n'as-tu pas accès à ton serveur ?
Je veux dire pour installer/administrer subversion.


Publicité
Poster une réponse
Anonyme