Crossin的编程教室

标题: 关于文件读写的一个bug搞不明白 [打印本页]

作者: 风风魔王    时间: 2020-3-18 21:14
标题: 关于文件读写的一个bug搞不明白
本帖最后由 风风魔王 于 2020-3-18 21:52 编辑

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



用''' 注释掉,即




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

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

作者: 风风魔王    时间: 2020-3-18 21:54
本帖最后由 风风魔王 于 2020-3-18 23:51 编辑

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

作者: crossin先生    时间: 2020-3-18 23:24
图片看不到,但看起来是你代码里有异常字符。
你可以新建个文件,重新手打一遍代码再试
作者: 风风魔王    时间: 2020-3-18 23:36
本帖最后由 风风魔王 于 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

谢谢先生这么晚还在答疑,图片地址我单独列出来了,现在应该可以访问了
作者: 风风魔王    时间: 2020-3-18 23:38
本帖最后由 风风魔王 于 2020-3-19 09:16 编辑
crossin先生 发表于 2020-3-18 23:24
图片看不到,但看起来是你代码里有异常字符。
你可以新建个文件,重新手打一遍代码再试 ...


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

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

作者: 风风魔王    时间: 2020-3-19 09:46
标题: 发现python一个神奇的bug,注释掉的内容也会报错
代码:
'''
\U
'''
只要注释里有\U 就会报错,python中注释也会读取吗?


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

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

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

2. 在引号前面加 r
r'''
f = open(r"~\Desktop\a.txt")
'''
作者: 风风魔王    时间: 2020-3-19 15:59
crossin先生 发表于 2020-3-19 15:55
看了下,你这个错误很有意思。
原因是字符里有 %u 会被转义成 uncode,但因为后面不是正常的编码,导致程序 ...

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




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5