111 votes

Pourquoi est-ce que je reçois une SyntaxError pour un échappement Unicode dans mon chemin de fichier ?

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

J'obtiens l'erreur suivante lorsque j'essaie 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

184voto

Martijn Pieters Points 271458

Vous devez utiliser un brut doublez vos barres obliques ou utilisez 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, l'élément \U signale un échappement de point de code Unicode étendu.

Vous pouvez frapper n'importe quel nombre d'autres questions, pour n'importe quelle autre séquences d'échappement reconnues comme \a , \t ou \x .

Notez qu'à partir de Python 3.6, les séquences d'échappement non reconnues peuvent déclencher un message d'erreur. DeprecationWarning (vous devrez supprimer le filtre par défaut pour celles-ci), et dans une future version de Python, de telles séquences d'échappement non reconnues provoqueront une erreur de type SyntaxError . Aucune version spécifique n'a été fixée pour l'instant, mais Python utilisera en premier lieu SyntaxWarning dans la version précédente, ce sera une erreur.

Si vous souhaitez trouver des problèmes de ce type dans les versions 3.6 et supérieures de Python, vous pouvez transformer l'avertissement en un message de type SyntaxError exception en utilisant le filtre d'avertissements error:^invalid escape sequence .*:DeprecationWarning (via un ligne de commande , variable d'environnement o appel de fonction ) :

Python 3.10.0 (default, Oct 15 2021, 22:25:32) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import warnings
>>> '\expoperialed'
'\\expoperialed'
>>> warnings.filterwarnings('default', '^invalid escape sequence .*', DeprecationWarning)
>>> '\expoperialed'
<stdin>:1: DeprecationWarning: invalid escape sequence '\e'
'\\expoperialed'
>>> warnings.filterwarnings('error', '^invalid escape sequence .*', DeprecationWarning)
>>> '\expoperialed'
  File "<stdin>", line 1
    '\expoperialed'
    ^^^^^^^^^^^^^^^
SyntaxError: invalid escape sequence '\e'

6voto

coder Points 2410

Cela se produit généralement dans Python 3. L'une des raisons les plus courantes est que, lorsque vous spécifiez le chemin d'accès à votre fichier, vous avez besoin de " \\ "au lieu de "\". Comme dans :

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

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

4voto

POOJA TAYADE Points 57
f = open('C:\\Users\\Pooja\\Desktop\\trolldata.csv')

Utiliser ' \\ ' pour un programme python dans Python version 3 et plus . L'erreur sera résolue..

0voto

SPK Points 27

Les trois syntaxes fonctionnent très bien.

Une autre méthode consiste à écrire d'abord

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

et ensuite le passer à os.chdir(path)

-2voto

Bec Points 17

J'ai eu la même erreur. En fait, 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 : \file_name.png en plaçant le fichier auquel je veux accéder à partir de python directement dans 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 mettez votre projet sous C :.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X