Pourquoi est-ce que j'obtiens une SyntaxError pour un échappement Unicode dans mon chemin de fichier?

105

Le dossier auquel je veux accéder s'appelle python et se trouve sur mon bureau.

J'obtiens l'erreur suivante lorsque j'essaye d'y accéder

>>> os.chdir('C:\Users\expoperialed\Desktop\Python')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
inspiré
la source
8
Essayez s.chdir(r'C:\Users\expoperialed\Desktop\Python'); lire: docs.python.org/2/reference/…
NullUserException

Réponses:

168

Vous devez utiliser une chaîne brute , doubler vos barres obliques ou utiliser des barres obliques à la place:

r'C:\Users\expoperialed\Desktop\Python'
'C:\\Users\\expoperialed\\Desktop\\Python'
'C:/Users/expoperialed/Desktop/Python'

Dans les chaînes Python normales, la \Ucombinaison de caractères signale un échappement de point de code Unicode étendu.

Vous pouvez rencontrer n'importe quel nombre d'autres problèmes, pour l'une des séquences d'échappement reconnues , telles que \aou tou \x, etc.

Martijn Pieters
la source
Cela ne m'aide pas :(
Dmitry
1
@Dmitry votre commentaire n'aide personne. Désolé, la réponse ne vous a pas aidé à résoudre votre problème, mais comment vais-je améliorer mon message avec ces commentaires?
Martijn Pieters
Regardez ma réponse ci-dessous.
Dmitry
@Dmitry: c'est un problème différent, et peu à voir avec les littéraux de chaîne. Il y a d'autres articles sur le site qui gèrent le raw_unicode_escapecodec. Qu'un paquet spécifique ait un bogue qui lève la même exception n'est pas vraiment une réponse à cette question spécifique, donc je l'ai supprimé à nouveau (la communauté l'avait déjà supprimé auparavant). Je soupçonne qu'il existe de meilleures façons de résoudre ce bug spécifique (comme ne pas arriver au point où vous devez l'utiliser raw_unicode_escapeen premier lieu).
Martijn Pieters
10

C:\\Users\\expoperialed\\Desktop\\Python Cette syntaxe a fonctionné pour moi.

le pape
la source
7

Cela se produit généralement en Python 3. Une des raisons courantes serait que, lors de la spécification de votre chemin de fichier, vous avez besoin de "\\" au lieu de "\". Un péché:

filePath = "C:\\User\\Desktop\\myFile"

Pour Python 2, il suffit d'utiliser "\".

codeur
la source
5
f = open('C:\\Users\\Pooja\\Desktop\\trolldata.csv')

Utilisez '\\' pour le programme python dans Python version 3 et supérieure. L'erreur sera résolue.

POOJA TAYADE
la source
pourquoi tripler `\`? Modifier une faute de frappe? Ok maintenant je vois l'historique des publications et quelqu'un a corrigé le formatage pas assez soigneusement, donc j'ai corrigé cela. Veuillez vous familiariser avec les fonctionnalités SO .
Marek R
1

Les trois syntaxes fonctionnent très bien.

Une autre façon est d'écrire d'abord

path = r'C: \ user \ ................... '(quel que soit le chemin pour vous)

puis en le passant à os.chdir (chemin)

SPK
la source
0

Utilisez ceci

os.chdir('C:/Users\expoperialed\Desktop\Python')
Pygirl
la source
-1

J'ai eu la même erreur. Fondamentalement, je soupçonne que le chemin ne peut pas commencer par "U" ou "User" après "C: \". J'ai changé mon répertoire en "c: \ nom_fichier.png" en plaçant le fichier auquel je veux accéder à partir de python juste sous le chemin 'c: \'.

Dans votre cas, si vous devez accéder au dossier "python", réinstallez peut-être le python et changez le chemin d'installation en quelque chose comme "c: \ python". Sinon, évitez simplement le "... \ User ..." dans votre chemin et placez votre projet sous C :.

Bec
la source