Exception in Tkinter callback——Python编程时编译失败的问题

标签:
it |
分类: IT博文 |
今天不得不说明这个问题,有一个程序,在IDLE下编写并且里面的注释包含中文,然后程序编写完了之后按F5运行程序时就发想一直没有反应,然后我关掉IDLE找到该程序的所在位置,右击选择使用IDLE打开:
File "D:\Python26\lib\lib-tk\Tkinter.py",
line 1410, in __call__
return
self.func(*args)
File
"D:\Python26\lib\idlelib\MultiCall.py", line 167, in handler
r = l[i](event)
File
"D:\Python26\lib\idlelib\ScriptBinding.py", line 140, in
run_module_event
code =
self.checksyntax(filename)
File
"D:\Python26\lib\idlelib\ScriptBinding.py", line 99, in
checksyntax
return compile(source,
filename, "exec")
File
"<pyshell#4>", line 1, in
<module>
import
downLoadDic4
File "D:\Python26\downLoadDic4.py", line
9
http://s6/middle/7d266fb0gc63f5a765415&690in Tkinter callback——Python编程时编译失败的问题" TITLE="Exception in Tkinter callback——Python编程时编译失败的问题" />
结果打开后如下,一切正常,视图如下,可以看到中文部分的注释:
结果打开后如下,一切正常,视图如下,可以看到中文部分的注释:
http://s14/middle/7d266fb0gc63f70cef93d&690in Tkinter callback——Python编程时编译失败的问题" TITLE="Exception in Tkinter callback——Python编程时编译失败的问题" />
按下F5键运行时终于有了报错:
按下F5键运行时终于有了报错:
Exception in Tkinter callback
Traceback (most recent call last):
ValueError: invalid \x escape
报错信息显示值错误ValueError: invalid
\x
escape的原因是有非ASCII码的存在导致编译失败,但是我认为Python文件的编码默认是UTF-8,应该没有这个问题,所以我将该文件放到Python2.6的安装目录下,使用IDLE导入文件,结果就报错了:
>>> import
downLoadDic4
Traceback (most recent call last):
SyntaxError: Non-ASCII character '\xba' in file
D:\Python26\downLoadDic4.py on line 9, but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
(downLoadDic4.py, line 9)
这样子就得到了错误位置的准确信息,结果发现所有中文注释都出错了。删掉这些中文注释后就没有问题了。
但是还是有问题,那就是具体为什么之前的中文注释都没错就只有这个文件的中文注释出错了呢?然后我就回想到当时编写这个程序时是新打开一个编程文件,把另一个程序中的代码用ctrl+a和ctrl+c复制过来,然后ctrl+v黏贴到这个文件里的,所以我又在原来的downLoadDic.py文件中改进代码,并将其直接另存为一个文件,结果那个文件的运行就是没问题的了。所以说其实就是在复制到黏贴板的时候中文注释被改变为其他编码格式了,所以才会出现中文注释编码出错问题。
总结:中文编码需要注意,另外最好设置一下IDLE的默认编码为UTF-8