Python 用OPEN读文件报错 ,路径以及r

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: 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')

原因:

window 读取文件可以用\,但是在字符串中\是被当作转义字符来使用,所以’d:\a.txt’会被转义成’d:\a.txt’这是正确路径,所以不会报错。而‘C:\Users\FrankYuan\Pictures\Camera Roll\WIN_20161010_08_51_57_Pro.jpg ’中经过转义之后可能就找不到路径的资源了,例如\t可能就转义成tab键了。 解决办法

python在描述路径时可以有多种方式,现列举常见的三种 方式一:转义的方式

'd:\\a.txt'

方式二:显式声明字符串不用转义

r'd:\a.txt''

我强烈推荐第三种写法,这在Linux和window下都是行的通的。

'd:/a.txt'     

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

关于 ASP.NET 内存缓存你需要知道的 10 点

缓存机制的主要目的是提高应用程序的性能。作为 ASP.NET 开发人员,你可能会意识到 ASP.NET Web 窗体以及 ASP.NET MVC 可以使用 Ca...

8120
来自专栏大内老A

跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?

在《通过扩展让ASP.NET Web API支持W3C的CORS规范》中,我们通过自定义的HttpMessageHandler自行为ASP.NET Web AP...

320100
来自专栏梦魇小栈

笔记:NPM版本号自增,自动化发布NPM包

Description 在一个包的目录下执行此命令,会提升版本号,并把这个新的版本号写进package.json文件,如果存在npm-shrinkwrap.js...

31820
来自专栏流媒体

dll生成和使用

11220
来自专栏C/C++基础

Makefile教程

Makefile定义了软件开发过程中,项目工程编译链、链接的方法和规则。 由IDE自动生成或者开发者手动书写。 Unix(MAC OS、Solaris)和Lin...

38320
来自专栏流媒体人生

win7 x64 depends msvcr80.dll找不到

1.vc2008redist_x86,vcredist_x86都已经安装,vs05也已经正确安装

10710
来自专栏GreenLeaves

一、源代码-面向CLR的编译器-托管模块-(元数据&IL代码)

本文脉络图如下: ? 1、CLR(Common Language Runtime)公共语言运行时简介 ? (1)、公共语言运行时是一种可由多种编程语言一起使用的...

320100
来自专栏温安适的blog

剖析1条JMS消息

40470
来自专栏林德熙的博客

Roslyn 通过 Target 修改编译的文件

本文也是带着一个任务来开始。任务就是本渣是一个腹黑的开发者,想要在开发的过程替换一个文件,让开发者在编译出来的文件和他调用的文件是两个不同的文件。

14320
来自专栏三丰SanFeng

Linux删除乱码文件的方法

当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。 我们可以通过以下几种方法删除linux下的乱码文件。(文件...

27280

扫码关注云+社区

领取腾讯云代金券