Codage entre Python 3.2 et MacOs X.6.7. [Résolut] - Python - Programmation
Marsh Posté le 26-05-2011 à 17:01:22
Je verrais 2 possibilités:
1. Essaies de passer par le shell, voir si il a le bon encodage (encode en utf-8 et passe shell=true à subprocess.check_output)
2. Si ça tape directement dans HFS+ sans transcodage, l'encodage des noms est en UTF-16, pas en UTF-8. Essaies d'encoder ton nom de fichier en UTF-16
Autres idées:
Marsh Posté le 27-05-2011 à 15:08:29
Merci pour ta réponse Masklinn.
En fait j'utilise 'ls' pour récupérer les informations des éléments : les ACLs, les autorisations (user, group), la date (de modification), le nom (réel, avec espace etc), le type (lien, etc), le poids etc. Sur une ligne, que je trie après.
Çà en une seule passe. Je n'ai pas trouver comment récupérer de telles infos dans les modules, d'ou 'ls'.
Quand je tappe :
from os.path import supports_unicode_filenames
print(supports_unicode_filenames)
J'obtiens :
US-ASCII ???
Mais j'essaie avec Utf-16, je suis passé à côté…
Pas trouvé stdlib ??? os, io, sys ?
Marsh Posté le 27-05-2011 à 15:19:56
Bidouil06 a écrit : Merci pour ta réponse Masklinn. |
Aucun rapport, ça c'est à propos de l'utilisation de noms de fichiers unicode (type str en Python 3) quand tu appelles une commande.
Bidouil06 a écrit : Mais j'essaie avec Utf-16, je suis passé à côté… |
Après avoir testé, ça semble être de l'UTF-8 décomposé en fait.
Bidouil06 a écrit : Pas trouvé stdlib ??? os, io, sys ? |
os.stat avec stat.* je dirais.
Marsh Posté le 17-06-2011 à 16:34:43
Voilà une fonction pour remédier au blèm...
Pour les principaux caractères.
def codeT(texte): |
A fignoler, j'attend vos suggestions...
Marsh Posté le 17-06-2011 à 16:51:59
'tin tu portes bien ton pseudo toi
Marsh Posté le 25-05-2011 à 13:39:20
Bonjour,
J'ai écrit une boucle récursive pour récupérer les informations Unix d'éléments des répertoires à l'aide du module subprocess.check_output(). Ce qui me permet de récupérer les lignes à traiter.
La commande qui me pose un problème est :
subprocess.check_output(["ls", lsOption, rep]).decode("Utf-8" ).split('\n'))
Ça fonctionne très bien en ligne de commande. Mais quand le script est lancé de manière automatique par le biais de launchd, j'obtient :
subprocess.CalledProcessError: Command '['ls', '-TaeblO@', '/Re\314\247pertoireAvecDesAccents/']' returned non-zero exit status 1
Je précise que quand les répertoires n'ont pas d'accent, ça fonctionne. Je pensais à une erreur de codage, mais après de multiple tests (macroman, Utf-8, ascii…), j'ai toujours cette erreur avec un lancement automatique...
Y compris en faisant rep.encode("macroman" ) par exemple.
Une solution, explication, un lien d'information...
Python version : 3.2 (r32:88452, Feb 20 2011, 10:19:59)
[GCC 4.0.1 (Apple Inc. build 5493)]
supports_unicode_filenames = True
Message édité par Bidouil06 le 22-06-2011 à 15:22:14