ファイルパスにUnicodeエスケープのSyntaxErrorが表示されるのはなぜですか?


105

取得したいフォルダはpythonと呼ばれ、デスクトップにあります。

アクセスしようとすると、次のエラーが表示されます

>>> os.chdir('C:\Users\expoperialed\Desktop\Python')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

8
試してみてくださいs.chdir(r'C:\Users\expoperialed\Desktop\Python')。読み:docs.python.org/2/reference/...
NullUserException

回答:


168

生の文字列を使用するか、スラッシュを2倍にするか、代わりにスラッシュを使用する必要があります。

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

通常のpython文字列では、\U文字の組み合わせは拡張Unicodeコードポイントエスケープを通知します。

or やなどの認識されたエスケープシーケンスのいずれかについて、他の問題をいくつでもヒットできます。\at\x


それは私を助けません:(
Dmitry

1
@Dmitryあなたのコメントは誰の助けにもなりません。申し訳ありませんが、答えはあなたの問題を解決するのに役立ちませんでしたが、そのフィードバックで私の投稿をどのように改善しますか?
Martijn Pieters

以下の私の答えを見てください。
ドミトリー

@Dmitry:これは別の問題であり、文字列リテラルとはほとんど関係ありません。サイトには、raw_unicode_escapeコーデックを処理する他の投稿があります。特定のパッケージに同じ例外をスローするバグがあるというのは、実際にはこの特定の質問に対する回答ではないので、もう一度削除しました(コミュニティは以前にすでに削除していました)。その特定のバグを解決するためのより良い方法があると思います(raw_unicode_escape最初に使用する必要があるポイントに到達しないなど)。
Martijn Pieters

10

C:\\Users\\expoperialed\\Desktop\\Python この構文は私にとってうまくいきました。


7

これは通常、Python 3で発生します。一般的な理由の1つは、ファイルパスを指定するときに「\」ではなく「\\」が必要になることです。のように:

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

Python 2の場合、「\」を使用するだけで機能します。


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

Pythonバージョン3以降のPythonプログラムには「\\」を使用します。エラーは解決されます。


なぜトリプル `\`?タイプミスを編集していますか?わかりました。投稿履歴が表示され、誰かがフォーマットを注意深く修正しなかったので、修正しました。SO機能に慣れてください。
Marek R

1

3つの構文はすべて非常にうまく機能します。

別の方法は、最初に書くことです

path = r'C:\ user \ ................... '(あなたのパスは何でも)

そしてそれをos.chdir(path)に渡します



-1

同じエラーが発生しました。基本的に、パスは「C:\」の後に「U」または「User」のどちらでも開始できないと思います。pythonからアクセスしたいファイルを 'c:\'パスのすぐ下に置くことにより、ディレクトリを "c:\ file_name.png"に変更しました。

あなたの場合、「python」フォルダにアクセスする必要がある場合は、おそらくpythonを再インストールし、インストールパスを「c:\ python」のようなものに変更します。それ以外の場合は、パスの "... \ User ..."を避け、プロジェクトをC:の下に置きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.