Pages: [1]   Bas de page
  Répondre  |  Envoyer ce fil  |  Imprimer  
Auteur Fil de discussion: bug xbmc windows et noms de fichiers unicode  (Lu 2160 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Version Pré Alpha
Fait partie du Décor
*
Karma: 0
Messages: 1538
En ligne En ligne
Sexe: Homme
Voir le profil
« le: 08 Novembre 2008 02:28:48 »
Quote (selected)

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
Développé Couché
Fait partie du Décor
*
Karma: 0
Messages: 2519
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
Voir le profil
« Répondre #1 le: 08 Novembre 2008 06:43:23 »
Quote (selected) Haut de page

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

Développé Couché
Fait partie du Décor
*
Karma: 0
Messages: 2519
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
Voir le profil
« Répondre #2 le: 08 Novembre 2008 06:45:09 »
Quote (selected) Haut de page

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

Version Pré Alpha
Fait partie du Décor
*
Karma: 0
Messages: 1538
En ligne En ligne
Sexe: Homme
Voir le profil
« Répondre #3 le: 08 Novembre 2008 14:17:02 »
Quote (selected) Haut de page

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
Version Pré Alpha
Fait partie du Décor
*
Karma: 0
Messages: 1538
En ligne En ligne
Sexe: Homme
Voir le profil
« Répondre #4 le: 08 Novembre 2008 14:32:48 »
Quote (selected) Haut de page

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
Développé Couché
Fait partie du Décor
*
Karma: 0
Messages: 2519
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
Voir le profil
« Répondre #5 le: 08 Novembre 2008 18:18:52 »
Quote (selected) Haut de page

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

Version Pré Alpha
Fait partie du Décor
*
Karma: 0
Messages: 1538
En ligne En ligne
Sexe: Homme
Voir le profil
« Répondre #6 le: 08 Novembre 2008 18:21:48 »
Quote (selected) Haut de page

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
Développé Couché
Fait partie du Décor
*
Karma: 0
Messages: 2519
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
Voir le profil
« Répondre #7 le: 08 Novembre 2008 18:30:39 »
Quote (selected) Haut de page

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

Version Pré Alpha
Fait partie du Décor
*
Karma: 0
Messages: 1538
En ligne En ligne
Sexe: Homme
Voir le profil
« Répondre #8 le: 08 Novembre 2008 18:53:15 »
Quote (selected) Haut de page

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 18: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
Développé Couché
Fait partie du Décor
*
Karma: 0
Messages: 2519
Hors ligne Hors ligne
Sexe: Homme
Developpeur Python petit scarabée
Voir le profil
« Répondre #9 le: 08 Novembre 2008 23:31:59 »
Quote (selected) Haut de page

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
Dans la Réponse Rapide vous pouvez utiliser du BBCode et des émoticônes comme sur un message normal, mais à partir d'une interface beaucoup plus simple et dépouillée.