Toujours connecté :

> Recherche avancée...

Menus

Connexion Inscription

Recherche

Pages: [1]   Bas de page
  Répondre  |  Envoyer ce fil  |  Imprimer  
Auteur Fil de discussion: bug xbmc windows et noms de fichiers unicode  (Lu 1306 fois)
0 Membres et 1 Invité sur ce fil de discussion.

Hors ligne Voir le profil Homme

# alexsolex - Version Pré Alpha

Fait partie du Décor - Messages: 1292

Developpeur

bug xbmc windows et noms de fichiers unicode

« le: 08 Novembre 2008 01:28:48 »
Citer en réponse
bonsoir à tous

un petit message rapide pour vous informer d'un bug que j'ai rencontré et qui m'a pompé ma soirée entière.

Si vous essayez de créer un fichier avec la commande python open(..,'w') et que vous obtenez un message d'erreur #122 de windows, alors c'est sans doute que votre chemin est en unicode

Pour remédier au problème, vous pouvez par exemple faire :
Code
(Python):
path = u"/mon/chemin/unicode/vers/mon/fiochier.ext"
f=open(path.encode('utf8'),"w")
f.write(...)
f.close()
on retransforme le unicode en encoding utf8 et là plus de problèmes
Journalisée

Si tu sais pas taper, il est encore temps d'apprendre : http://www.lecturel.com/clavier/mots-par-minute.php

"Toute idée que nous avons dans l'esprit devient une réalité dans le domaine de la possibilité...", Emile Couet

En ligne Voir le profil Homme

# Temhil - Développé Couché

Developpeur Python petit scarabée - Fait partie du Décor - Messages: 2420

Fondateur

Merci pour cette info, j'ai eu des problemes similaire mais avec beautiful soup ou il me fallait encoder l'unicode and un autre format afin de recuperer une string.
Je vais mettre un lien sur ce fil dans le sujet code snippet.
Journalisée

En ligne Voir le profil Homme

# Temhil - Développé Couché

Developpeur Python petit scarabée - Fait partie du Décor - Messages: 2420

Fondateur

Edit petite question tutefois, comment reproduit tu ce bug?
En recuperant d'un source exterieure (parsing d'un page web par ex) le path?
Ou bien en le creant? Peux tu nous donner plus de details STP?
Merci
Journalisée

Hors ligne Voir le profil Homme

# alexsolex - Version Pré Alpha

Fait partie du Décor - Messages: 1292

Developpeur

Si tu es sous windows avec ton xbmc, tu créés un simple script du genre :
Code
(Python):
import os, os.path
chemin_non_unicode = os.path.join(os.getcwd(),"chemin non unicode.txt")
f=open(chemin_non_unicode ,"w")
f.write("test reussi")
f.close()
 
chemin_unicode = unicode(os.path.join(os.getcwd(),"chemin unicode.txt"))
try:
 f=open(chemin_unicode ,"w")
 #une erreur windows sera levé lors de la création : Errno 122
 f.write("blabla")
 f.close()
except Exception,msg:
 print Exception,msg
 
#autre essai
try:
 f=open(u"test.txt" ,"w")
 #une erreur windows sera levé lors de la création : Errno 122
 f.write("blabla")
 f.close()
except Exception,msg:
 print Exception,msg

Que le chemin soit récupéré ou écrit, si il est en unicode, alors ca plante.

Dans mon cas, je passe par l'unicode que je réencode pour afficher correctement les textes accentués. Donc le chemin doit se retrouver unicode à un moment ou un autre et donc provoque cette erreur
Je l'ai solutionné comme suit :
Code
(Python):
try:
 f=open(u"test.txt".encode("utf8") ,"w")
 f.write("succes")
 f.close()
except Exception,msg:
 print Exception,msg
Journalisée

Si tu sais pas taper, il est encore temps d'apprendre : http://www.lecturel.com/clavier/mots-par-minute.php

"Toute idée que nous avons dans l'esprit devient une réalité dans le domaine de la possibilité...", Emile Couet

Hors ligne Voir le profil Homme

# alexsolex - Version Pré Alpha

Fait partie du Décor - Messages: 1292

Developpeur

Merci pour cette info, j'ai eu des problemes similaire mais avec beautiful soup ou il me fallait encoder l'unicode and un autre format afin de recuperer une string.
beautifulsoup est 100% unicode (ce qui est très bien en fait car si tout est unicode, tu ne te prends pas la tête, les accents seront bien gérés.) Donc effectivement, si tu utilises beautifulsoup pour récupérer un lien (d'ailleur c'est mon cas pour tivimi) alors tu récupèreras un lien en unicode et ca posera problème.
Journalisée

Si tu sais pas taper, il est encore temps d'apprendre : http://www.lecturel.com/clavier/mots-par-minute.php

"Toute idée que nous avons dans l'esprit devient une réalité dans le domaine de la possibilité...", Emile Couet

En ligne Voir le profil Homme

# Temhil - Développé Couché

Developpeur Python petit scarabée - Fait partie du Décor - Messages: 2420

Fondateur

C'est bien ce que je pensais avoir compris (pour ton pbs).
En effet cela aurait ete bien qu'ils supporte et string et unicode. Mais est-ce un bug (c.a.d que python lui supporte l'unicode pour ouvrir les fichier)?
Journalisée

Hors ligne Voir le profil Homme

# alexsolex - Version Pré Alpha

Fait partie du Décor - Messages: 1292

Developpeur

Essayes et tu verras.
Tu peux tester l'exemple précédent dans ton interpréteur python (moi j'ai la 2.4 sur mon PC et ca fonctionnait même avec un nom unicode)
Mais oui à priori il n'y a rien d'incompatible car il encode le nom de fichier dans l'encoding de l'OS
Journalisée

Si tu sais pas taper, il est encore temps d'apprendre : http://www.lecturel.com/clavier/mots-par-minute.php

"Toute idée que nous avons dans l'esprit devient une réalité dans le domaine de la possibilité...", Emile Couet

En ligne Voir le profil Homme

# Temhil - Développé Couché

Developpeur Python petit scarabée - Fait partie du Décor - Messages: 2420

Fondateur

Je me demande s'il ne faudrait pas ouvrir un bug sur le forum officiel ...
Journalisée

Hors ligne Voir le profil Homme

# alexsolex - Version Pré Alpha

Fait partie du Décor - Messages: 1292

Developpeur

genre ca : http://xbmc.org/trac/ticket/5243
Code
(Python):
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
 
   ****************************************************************
   Personal firewall software may warn about the connection IDLE
   makes to its subprocess using this computer's internal loopback
   interface.  This connection is not visible on any external
   interface and no data is sent to or received from the Internet.
   ****************************************************************
 
IDLE 1.1.4      ==== No Subprocess ====
>>> f=open(u'
test.txt','w')
>>> f.write("test")
>>> f.close()
>>> g=open('
test.txt')
>>> g.read()
'
test'
>>> g.close()
>>> g=open(u'
test.txt')
>>> g.read()
'
test'
>>> g.close()
>>> f=open(u'
ééé.txt','w')
>>> f.write("test")
>>> g.close()
>>>
« Dernière édition: 08 Novembre 2008 17:57:26 par alexsolex » Journalisée

Si tu sais pas taper, il est encore temps d'apprendre : http://www.lecturel.com/clavier/mots-par-minute.php

"Toute idée que nous avons dans l'esprit devient une réalité dans le domaine de la possibilité...", Emile Couet

En ligne Voir le profil Homme

# Temhil - Développé Couché

Developpeur Python petit scarabée - Fait partie du Décor - Messages: 2420

Fondateur

Exactement! Bon si c'est dans la pile! Merci en tout cas pour l'info Alexsolex  smiley, je l'ai ajoute aux snippets
Journalisée

Pages: [1]   Haut de page
  Répondre  |  Envoyer ce fil  |  Imprimer  
 
Aller à:  

+ Réponse Rapide