设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 16014|回复: 7
打印 上一主题 下一主题

关于文件读写的一个bug搞不明白

[复制链接]

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2020-3-18 21:14:01 |只看该作者 |倒序浏览
本帖最后由 风风魔王 于 2020-3-18 21:52 编辑

python 版本 3.7 编译器是anaconda 中的spyder
我把代码

  • f = open(r"C:\Users\qqq\Desktop\a.txt")


用''' 注释掉,即


  • '''
  • f = open(r"~\Desktop\a.txt")
  • '''


这句话前面和后面啥也没写,为什么直接运行会报错呢?
报错在后面这个 ''' 这一行,这是什么情况,注释里只要写了 f= open() 就会报错,我去掉了就不报错了,为什么写在注释里的内容也会提示报错?

(Unicode Error) 'unicodeescape' codec can't decode bytes in position 2-3:truncated UXXXXXXXX escape
回复

使用道具 举报

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

沙发
发表于 2020-3-18 21:54:23 |只看该作者
本帖最后由 风风魔王 于 2020-3-18 23:51 编辑

图片链接修复了,在4楼和5楼
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2020-3-18 23:24:11 |只看该作者
图片看不到,但看起来是你代码里有异常字符。
你可以新建个文件,重新手打一遍代码再试
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

地板
发表于 2020-3-18 23:36:22 |只看该作者
本帖最后由 风风魔王 于 2020-3-19 00:06 编辑
crossin先生 发表于 2020-3-18 23:24
图片看不到,但看起来是你代码里有异常字符。
你可以新建个文件,重新手打一遍代码再试 ...

https://img-blog.csdnimg.cn/20200318215949192.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1YW5ncXVhbndlbnl1,size_16,color_FFFFFF,t_70

谢谢先生这么晚还在答疑,图片地址我单独列出来了,现在应该可以访问了
回复

使用道具 举报

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

5#
发表于 2020-3-18 23:38:21 |只看该作者
本帖最后由 风风魔王 于 2020-3-19 09:16 编辑
crossin先生 发表于 2020-3-18 23:24
图片看不到,但看起来是你代码里有异常字符。
你可以新建个文件,重新手打一遍代码再试 ...


https://img-blog.csdnimg.cn/2020 ... 6,color_FFFFFF,t_70

先生,我重新敲了一遍,甚至换了编译器也不行。
我在\U 前面又加了一个 \ 就不会报错了,是不是写在注释里面的内容程序也会读取啊
回复

使用道具 举报

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

6#
发表于 2020-3-19 09:46:28 |只看该作者

发现python一个神奇的bug,注释掉的内容也会报错

代码:
'''
\U
'''
只要注释里有\U 就会报错,python中注释也会读取吗?


和网友这个文章里遇到的一样
https://blog.csdn.net/wlsyn/article/details/49613867
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 2020-3-19 15:55:53 |只看该作者
看了下,你这个错误很有意思。
原因是字符里有 \U 会被转义成 uncode,但因为后面不是正常的编码,导致程序无法识别
注释里不会影响,但三引号并不是严格意义的注释,它其实是一个字符串,所以你这里等于是定义了一个带有无法识别字符的字符串,所以报错
而至于为啥么前面加的 r 没有起作用,是因为这个r是在字符串的内容

所以,除了自己加斜杠外,还有2种解决办法:
1. 用注释:
# f = open(r"~\Desktop\a.txt")

2. 在引号前面加 r
r'''
f = open(r"~\Desktop\a.txt")
'''
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

0

好友

218

积分

中级会员

Rank: 3Rank: 3

8#
发表于 2020-3-19 15:59:49 |只看该作者
crossin先生 发表于 2020-3-19 15:55
看了下,你这个错误很有意思。
原因是字符里有 %u 会被转义成 uncode,但因为后面不是正常的编码,导致程序 ...

感谢先生,彻底明白了,原谅我又单独开了个帖子,不好意思啦先生
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-25 02:10 , Processed in 0.022843 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部