Python 读取文件时 'unicodeescape' 报错及路径处理详解

键盘旁的猫
键盘旁的猫
发布时间:2026-10-13 | 4人浏览过
原创

本文解析Python中打开文件时常见的 'unicodeescape' 编码错误。该错误通常由Windows路径中的反斜杠被误认为转义字符引起。文章提供了三种解决方案:双反斜杠转义、原始字符串前缀r以及使用正斜杠,并推荐跨平台通用的正斜杠写法。

Python 读取文件 'unicodeescape' 报错原因

Python 中 ‘unicodeescape' codec can't decode bytes in position XXX: truncated \UXXXXXXXX escape 错误解决方案

Python 文件路径处理的三种解决方案

背景描述

今日在使用 Python 的 Pillow 模块处理图片时,遇到了一个报错。


SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX 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:\Users\FrankYuan\Pictures\Camera Roll\WIN_20161010_08_51_57_Pro.jpg' 这样的路径,经过转义处理后,部分序列(如 \t)可能被解释为制表符等控制字符,从而导致路径资源无法找到。

解决办法:

Python 在描述路径时支持多种写法,以下列举三种常见方式:


方式一:转义的方式
 
'd:\\a.txt'
 
方式二:显式声明字符串不用转义
 
'd:r\a.txt'
 
方式三:使用Linux的路径/
 
'd:/a.txt'

我强烈推荐第三种写法,因为它在 Linux 和 Windows 系统下均能正常运行。

以上内容即为解决 Python 读取文件时报错及路径处理的相关技巧,希望能对大家有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表