Bonjour à tous.
Si je mets une variable de type unicode accentuée à l'intérieur d'un popen, ça plante à tous les coups.
Illustration sous linux:
-> c'est bon
Code : Sélectionner tout - Visualiser dans une fenêtre à part os.popen("ls "+"*é*").readlines()
-> plantage
Code : Sélectionner tout - Visualiser dans une fenêtre à part os.popen("ls "+u"*é*").readlines()
Pourquoi ne pas passer par la 1ère commande me direz-vous? Et bien parce qu'on n'a pas toujours la possibilité de le faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 4: ordinal not in range(128)
Par ex. si on veut récupérer le chemin d'un fichier depuis une boite de dialogue de la librairie graphique Qt4, le fichier est retourné dans un type QString. On peut le faire passer en unicode via la fonction unicode(). Et ensuite on est bien embêté pour utiliser le nom du fichier dans une commande que l'on passe à popen.
La seule solution est de passer par la classe QProcess de Qt4.
Mais je voulais tout de même savoir par curiosité s'il y avait pas une parade avec popen.
Partager