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

pb ecriture dans fichier ou d'affichage simple (print) sur ecran avec IDE Eric ... ?

4 réponses
Avatar
DelSpam
Bonjour à tous,

J'ai quelques petits soucis pour
1) Ecrire dans un fichier avec l'ide Eric

2) Avoir un affichage correcte d'un 'print' avec l'ide Eric


Aucun soucis avec les mêmes programmes en utilisant l'interpreteur
Python ...


version utilisés (Debian Etch) :
Interpreteur: Python 2.4.4 (#2, Apr 15 2008, 23:43:20)
IDE Eric - 3.9.1: eric 3.9.1-1




1er exemple:
---------------
# Ici le fichier est bien créé avec Eric mais il reste vide

filename = "fichier.txt"
fichier = open(filename,"w")
txt = "tarte a la creme II, le retour"
fichier.write(txt + '\n')
fichier.close


2eme exemple :
---------------

t2 = ['a','b','c','d','e','f','g','h','i','j','k','l']

i = 0
while ( i < len(t2) ):
print t2[i], # pas d'affichage si virgule avec Eric,
i = i + 1 # sans virgule l'affichage est ok (ligne par
# ligne)

- J'ai essayé de déclarer l'environnement Python dans Eric (
/usr/bin/python ou d'utiliser les paramètres par défaut
sans succès ...

- la redirection des sorties standards (stdout, stderr , Cf. parametres
debug) dans Eric peut être activée ou désactivée, ça ne change rien

Eric est le coupable idéal (mais j'ai les mêmes problemes avec IDLE :o)
... Je continue à chercher mais peut être l'erreur est dans mon code ...


Par avance merci, pour toute info

4 réponses

Avatar
kib2
Salut,

je n'ai pas Eric d'installé, mais il me semble que tu commets une erreur avec
"fichier.close" qui devrait être "fichier.close()", close étant une méthode et
non un attribut d'un objet file.

Quant au second exemple, il me semble plus pertinent de l'écrire ainsi :

t2 = ['a','b','c','d','e','f','g','h','i','j','k','l']

for elem in t2:
print elem,

mais je ne vois pas pourquoi ça ne fonctionnerait pas sous Eric.
Avatar
DelSpam
Merci kib2,

En effet pour 1) "ecriture dans un fichier", plus de probleme avec les
() ( enfin avec la vraie methode close() ;) . Pardon Eric :$

Pour 2) "print" , même pb avec ta proposition

t2 = ['a','b','c','d','e','f','g','h','i','j','k','l']

for elem in t2:
print elem, # pas de pb avec l'interpreteur
# pas d'affichage du print avec Eric
# sauf si on enleve la virgule (mais
dans ce cas affichage en colone)

print # avec ajout de cette ligne, le ' print
elem, ' affiche bien t2 sur une ligne


bizarre, bizarre, j'ai un affichage correct (sans ajouter la ligne print
ou print "" à la fin du programme) avec le debogueur d'Eric ... à
suivre ...


----
kib2 a écrit :
Salut,

je n'ai pas Eric d'installé, mais il me semble que tu commets une erreur
avec "fichier.close" qui devrait être "fichier.close()", close étant une
méthode et non un attribut d'un objet file.

Quant au second exemple, il me semble plus pertinent de l'écrire ainsi :

t2 = ['a','b','c','d','e','f','g','h','i','j','k','l']

for elem in t2:
print elem,

mais je ne vois pas pourquoi ça ne fonctionnerait pas sous Eric.


Avatar
Eric Brunel
On Tue, 15 Jul 2008 15:07:44 +0200, DelSpam <"lipmi(DelSpam)"@free.fr>
wrote:
[snip]
Pour 2) "print" , même pb avec ta proposition

t2 = ['a','b','c','d','e','f','g','h','i','j','k','l']

for elem in t2:
print elem, # pas de pb avec l'interpreteur
# pas d'affichage du print avec Eric
# sauf si on enleve la virgule (mais
dans ce cas affichage en colone)

print # avec ajout de cette ligne, le ' print
elem, ' affiche bien t2 sur une ligne


bizarre, bizarre, j'ai un affichage correct (sans ajouter la ligne print
ou print "" à la fin du programme) avec le debogueur d'Eric ... à
suivre ...



Les entrées/sorties sont en général bufferisées par le système, ce qui se
traduit souvent par un affichage effectif uniquement lorsque la ligne est
complète. Le buffer est en général aussi "flushé" automatiquement lorsque
le programme s'arrête, mais dans un IDE, l'interpréteur peut ne pas sortir
lorsque le programme est fini.

Démonstration:
-----------------------------------
import time

for i in range(10):
print i,
time.sleep(1)
-----------------------------------

Chez moi, le script lancé avec l'interpréteur Python n'affiche rien
pendant 10 secondes, puis affiche toute la ligne d'un coup.

Si c'est vraiment important, ajouter un sys.stdout.flush() après chaque
print devrait résoudre le problème (avec le 'import sys' qui va bien, bien
sûr).

HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Avatar
DelSpam
Eric Brunel a écrit :
On Tue, 15 Jul 2008 15:07:44 +0200, DelSpam <"lipmi(DelSpam)"@free.fr>
wrote:
[snip]
Pour 2) "print" , même pb avec ta proposition

t2 = ['a','b','c','d','e','f','g','h','i','j','k','l']

for elem in t2:
print elem, # pas de pb avec l'interpreteur
# pas d'affichage du print avec Eric
# sauf si on enleve la virgule (mais
dans ce cas affichage en colone)

print # avec ajout de cette ligne, le ' print
elem, ' affiche bien t2 sur une ligne


bizarre, bizarre, j'ai un affichage correct (sans ajouter la ligne
print ou print "" à la fin du programme) avec le debogueur d'Eric ...
à suivre ...



Les entrées/sorties sont en général bufferisées par le système, ce qui
se traduit souvent par un affichage effectif uniquement lorsque la ligne
est complète. Le buffer est en général aussi "flushé" automatiquement
lorsque le programme s'arrête, mais dans un IDE, l'interpréteur peut ne
pas sortir lorsque le programme est fini.

Démonstration:
-----------------------------------
import time

for i in range(10):
print i,
time.sleep(1)
-----------------------------------

Chez moi, le script lancé avec l'interpréteur Python n'affiche rien
pendant 10 secondes, puis affiche toute la ligne d'un coup.

Si c'est vraiment important, ajouter un sys.stdout.flush() après chaque
print devrait résoudre le problème (avec le 'import sys' qui va bien,
bien sûr).

HTH
--python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"




import sys
sys.stdout.write ('merci :) n')