PythonはOPENでファイルを読み間違え、パスとr

2012 ワード

Pythonの「unicodeescape」codec can't decode bytes in position XXX:trunエラー解決策今日Python pillowモジュールを用いて画像を処理する際にエラーSyntaxError:(unicode error)「unicodeescape」codec can't decode bytes in position 2-3:truncatedUXXXXXXX escape最初は画像の名前が中国語だと思っていたが、認識しなかった.pythonファイルのヘッダに--coding:utf-8-
しかし、これを追加した後、私は写真の中国語を除いて英語に返して、それから間違って、愚かな顔をしています.その後stackoverflowで似たようなエラーが見つかりました.画像パスに問題がありました.エラーコードは以下の通りです.
im = Image.open('C:\Users\FrankYuan\Pictures\Camera Roll\WIN_20161010_08_51_57_Pro.jpg')

正しい結果
im = Image.open('C:\\Users\\FrankYuan\\Pictures\\Camera Roll\\WIN_20161010_08_51_57_Pro.jpg')

または
im = Image.open(r'C:\Users\FrankYuan\Pictures\Camera Roll\WIN_20161010_08_51_57_Pro.jpg')

または
im = Image.open(r'C:/Users/FrankYuan/Pictures/Camera Roll/WIN_20161010_08_51_57_Pro.jpg')

理由:
Windows読み取りファイルはを使うことができますが、文字列の中ではエスケープ文字として使われているので、'd:a.txt'は'd:a.txt'にエスケープされます.これは正しいパスなので、エラーは報告されません.そして『C:UsersFrankYuanPicturesCamera RollWIN_20161010_08_51_57_Pro.jpg’では、エスケープ後にパスのリソースが見つからない可能性があります.例えば、tはtabキーにエスケープされる可能性があります.解決策
pythonはパスを記述する際に様々な方法がありますが、一般的な3つの方法の1つを挙げます.1つは、エスケープの方法です.
'd:\\a.txt'

方法2:明示的に文字列を宣言してエスケープしない
r'd:\a.txt''

3つ目の書き方を強くお勧めします.これはLinuxとwindowの下では通用します.
'd:/a.txt'