Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage console

5 réponses
Avatar
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

5 réponses

Avatar
Damien Wyart
* Pierre Maurette in fr.comp.lang.python:
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

Avatar
Pierre Maurette
* Pierre Maurette in fr.comp.lang.python:
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


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



* Pierre Maurette in fr.comp.lang.python:
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


Avatar
jean-michel bain-cornu
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 ?

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