扩展Python控制台实现中文反馈信息
"中文编程"知乎专栏原文地址
参考了周蟒的实现, 运行效果如下:
$ python3 解释器.py Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. (ZhPyConsole) >>> 学 Traceback (most recent call last): File "<console>", line 1, in <module> 命名错误: 命名'学'未定义 >>> for i in range(1,4): ... 生 ... Traceback (most recent call last): File "<console>", line 2, in <module> 命名错误: 命名'生'未定义
完整源码在: 解释器.py
相关源码如下, 即改写InteractiveInterpreter.showtraceback
方法. 仅为演示之用, 直接用了字符串替换.:
def showtraceback(self): sys.last_type, sys.last_value, last_tb = ei = sys.exc_info() sys.last_traceback = last_tb try: 行 = traceback.format_exception(ei[0], ei[1], last_tb.tb_next) 汉化行 = [] if sys.excepthook is sys.__excepthook__: for 某行 in 行: for 英文 in self.字典: 某行 = 某行.replace(英文, self.字典[英文]) 汉化行.append(某行) self.write(''.join(汉化行)) else: # If someone has set sys.excepthook, we let that take precedence # over self.write sys.excepthook(ei[0], ei[1], last_tb) finally: last_tb = ei = None
定制sys.excepthook
貌似更为合适, 还需研究如何实现.
参考资料
2019-02-10
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
VS Code创建自定义Python代码片段
续前文[日常]Beyond的歌里最多是"唏嘘"吗? - Python分词+词频最后的想法, 发现VS Code支持用户自定义代码片段: Creating your own snippets in Visual Studio Code 尝试如下, 片段使用中文命名, 但前缀好像不能用中文(如果前缀设置为"文件", 在源码编辑时输入"文件"后没有自动补全弹窗), 应该与自动补全机制有关. 无法粘贴,详见原文:https://zhuanlan.zhihu.com/p/56035257 片段定义: { "读文件": { "prefix": "file", "body": [ "with open(${1:文件全路径}) as 文件:", "\t内容 = 文件.read()" ], "description": "读取某文件" }, "读所有文件": { "prefix": "file", "body": [ "import os", "路径 = '.'", "for 文件名 in os.listdir(路径):", "\twith open(os.path.join(路径, 文件名)) as ...
- 下一篇
扩展Python控制台实现中文反馈信息之二-正则替换
"中文编程"知乎专栏原文地址 续前文扩展Python控制台实现中文反馈信息, 实现了如下效果: >>> 学 Traceback (most recent call last): File "<console>", line 1, in <module> 命名错误: 命名'学'未定义 >>> [1] + 2 Traceback (most recent call last): File "<console>", line 1, in <module> 类型错误: 只能将list(而非"int")联结到list >>> [1].length Traceback (most recent call last): File "<console>", line 1, in <module> 属性错误: 'list'个体没有'length'属性 >>> def foo(): ... def bar(): ... print(type) ... bar() ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Red5直播服务器,属于Java语言的直播服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS关闭SELinux安全模块