Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1370 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Accents - Bogue étrange en Python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Accents - Bogue étrange en Python

n°1846800
taupiste
Posté le 03-02-2009 à 19:20:58  profilanswer
 

Mon programme est simple, le voici:
 
**********************************************
def write_file(nomDuFichier,contenu):
        fichier = open(nomDuFichier,"w" )
        fichier.write(contenu)
        fichier.close()
 
def load_mots(nomDuFichier):
        fichier = open(nomDuFichier,"r" )
        lignes=fichier.readlines()
        fichier.close()
        return lignes
 
def spliter(mots,output):
     for i in range(0,len(mots),1):
         mot=mots[i].split("\n" )[0]
         write_file(output+"/"+mot+".txt",mot)
 
mots = load_mots("mots.txt" )
spliter(mots,"mots" )     # "mots" c'est le nom du dossier où les fichiers sont créer
***********************************************
 
Donc en gros, ça ouvre un fichier mots.txt contenant un mot (ou expression) par ligne
et ça crée un fichier par mot (nommée  "le mot en question".txt et qui contient "le mot en question" )
 
Par exemple si j'ai dans mots.txt:
 
***********
laitue
fromage
des biscuits
patate
***********
 
Je vais obtenir 4 fichiers, soient:
 
laitue.txt (contenant laitue)
fromage.txt (contenant fromage)
des biscuits.txt (contenant des biscuits)
patate.txt (contenant patate)
 
Le programme fonctionne parfaitement SAUF dans certains cas très douteux comme si j'ai dans mots.txt:
 
************
laitue
à gauche
du poulet
à droite
étrange
************
 
j'obtient:
 
laitue.txt (contenant laitue)
à gauche.txt (contenant □□□□)                    <------------------------------POURQUOI???  
du poulet.txt (contenant des du poulet)
à droite.txt (contenant à droite)
étrange.text (contenant étrange)
 
 
Je ne comprends pas, ce n'est pas un problème d'accent, les autres fonctionnent
Je ne comprend vraiment pas, même "à droite" fonctionnent
même le nom du fichier est correct
 
J'ai fait d'autre test et voici d'autre qui me donne des résultats semblables:
 
aaéaaa.txt  contient     □□□
aaéaaaa.txt  contient   aaéaaaa
aaéaaaaa.txt  contient    □□□□
aaéaaaaaa.txt  contient    aaéaaaaaa
aaéaaaaaaa.txt  contient    □□□□□
aaéaaaaaaaa.txt  contient    aaéaaaaaaaa
aaéaaaaaaaaatxt  contient    □□□□□□
 
(il me semble y avoir une régularité avec ceux qui sont pairs... mais c'est étrange)
 
Avez-vous une idée d'où provient ce bug
 
Merci

mood
Publicité
Posté le 03-02-2009 à 19:20:58  profilanswer
 

n°1847032
0x90
Posté le 04-02-2009 à 12:12:48  profilanswer
 

Au pif je dirais que tu ouvre tes fichiers .txt avec notepad.
Celui-ci essaye de deviner l'encodage des fichiers textes pour afficher les caractères correctement quelque soit l'encodage.
Pour deviner il fait des statistiques, or les statistiques sur des chaines aussi petites ça dévie facilement, du coup il se plante et parfois affiche pas avec le bon encodage.

 

C'est pas sûr, mais je doute que python ait un bug sur les accents "que de temps en temps" et sans que ce soit un cas spécial genre "accent sur le 1er caractère du fichier", essaye d'ouvrir tes fichiers textes avec un autre éditeur un peu plus évolué, et si c'est bien ça, regarde dans la doc de python comment on choisit l'encodage des chaines qu'on écrit dans un fichier.

Message cité 1 fois
Message édité par 0x90 le 04-02-2009 à 12:13:16

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1847066
taupiste
Posté le 04-02-2009 à 13:21:23  profilanswer
 

Wow merci!
 
C'est exactement ça. Si je l'ouvre avec autre chose que NotePad, ça fonctionne, il n'y a plus les □□□. J'aurais vraiment du essayer de les ouvrir avec autre chose, mais je me suis trop concentré sur le l'étrangeté des conditions d'apparition du bogue.
 
Merci encore

n°1847124
masklinn
í dag viðrar vel til loftárása
Posté le 04-02-2009 à 14:28:25  profilanswer
 

0x90 a écrit :

regarde dans la doc de python comment on choisit l'encodage des chaines qu'on écrit dans un fichier.


En 2.x avec codecs.open(file, mode, encoding) qui prend et sort de l'unicode, sinon en appelant manuellement "decode" sur un string et "encode" sur un unicode (codecs.open est un wrapper sur open qui fait simplement l'encoding et le decoding automatiquement)


Message édité par masklinn le 04-02-2009 à 14:28:52

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Accents - Bogue étrange en Python

 

Sujets relatifs
probléme accents dans une base POSTGRE à partir d'un prog JAVAsymbole en python
Encodage et accentsGenerer des nombres aleatoires... mais différents (python)
Python pour débutant[python]transformer une ip hex en decimal [résolu]
pb affichage photo et beugue accentsPython : liste de liste, exercice
Module Tkinter pythonPython, problème avec les tableaux
Plus de sujets relatifs à : Accents - Bogue étrange en Python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR