2010-11-13 7 views
3

c'était censé être un simple scriptCopier des fichiers avec des noms unicode

import shutil 

files = os.listdir("C:\\") 
for efile in files: 
    shutil.copy(efile, "D:\\") 

Il a bien fonctionné, jusqu'à ce que je l'ai essayé sur un PC avec les fichiers nommés avec des caractères unicode! python vient de convertir ces caractères en points d'interrogation "????" lors de l'obtention de la liste de os.listdir, et le processus de copie soulevé "fichier introuvable" exception !!

Répondre

3

Vous devez utiliser Unicode pour accéder aux noms de fichiers qui ne se trouvent pas dans l'ACP (page de code ANSI) du système Windows sur lequel vous travaillez. Pour ce faire, assurez-vous de nommer des répertoires comme Unicode:

import shutil 

files = os.listdir(u"C:\\") 
for efile in files: 
    shutil.copy(efile, u"D:\\") 

Passer une chaîne Unicode à os.listdir va faire revenir les résultats sous forme de chaînes Unicode plutôt que de les coder.

Ne pas oublier que os.listdir ne sera pas include_path, vous voulez probablement fait quelque chose comme:

shutil.copy(u"C:\\" + efile, u"D:\\") 

Voir aussi http://docs.python.org/howto/unicode.html#unicode-filenames.

Questions connexes