2010-02-24 5 views
0

Je veux écrire un dossier sur un système Windows, Vista et Win7 avec des systèmes de fichiers NTFS. Les dossiers peuvent contenir les caractères å, ä et/ou ö, "förjävligt" par exemple.Système de fichiers Python et Windows avec caractères non-ascii

Les fichiers python et toutes les chaînes qu'il contient sont actuellement en UTF-8. Comment les convertir en suite du système de fichiers Windows?

Répondre

3

Si vous travaillez avec Python normal 2 cordes, vous pouvez simplement les convertir en Unicode

# -*- coding: utf-8 -*- 
normalString = "äöü" 

# Now convert to unicode. Specified encoding must match the file encoding 
# in this example. In general, you must specify how the bytes-only string 
# contained in "normalString" is encoded. 
unicodeString = unicode(normalString, "utf-8") 

with open(unicodeString, "w") as f: 
    ... 

et créer les fichiers en utilisant les chaînes Unicode. Python (et indirectement l'API Windows) s'occupera du reste.

1

Si vous voulez que les chaînes soient vraiment sympas pour travailler avec des fenêtres, vous pouvez utiliser cette fonction safeFilenameCodec. C'est un sous-ensemble de caractères autorisés, mais vous n'aurez pas à vous soucier de la folie. Et il a une licence généreuse.

+0

Cette bibliothèque doit être appelée "uglyFilenamesCodec". Cela fonctionne mais les noms de fichiers ne seront pas très lisibles. J'ai créé une bibliothèque similaire pour nommer les fichiers musicaux (échappe des caractères comme \ /: *? "<> | Dans le titre de la chanson) - mais je n'utiliserais pas une telle solution pour * tous * les noms de fichiers. – AndiDog

Questions connexes