>> 学Traceback (most recent call last): File "", line 1, in

文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

2019-02-18 扩展Python控

2023-01-30 23:43

关注

"中文编程"知乎专栏原文地址

续前文扩展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()
...     type = 1
... 
>>> foo()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<console>", line 4, in foo
  File "<console>", line 3, in bar
命名错误: 在闭合作用域中, 自由变量'type'在引用之前未被赋值

源码在: program-in-chinese/study 现在支持的报错信息列表见测试用例: test翻译.py

参考re - Regular expression operations - Python 3.7.2 documentation, 用一系列(现8个)正则表达式匹配和替换实现, 比如:

if re.match(r"NameError: name '(.*)' is not defined", 原始信息):
    return re.sub(r"NameError: name '(.*)' is not defined", r"命名错误: 命名'\1'未定义", 原始信息)

期间发现Python编译器源代码中的报错信息所处位置比较分散, 似乎有上百处. 下面的打算:

  • 首先将它打包发布到Pypi, 参考Packaging Python Projects
  • 逐步补充报错信息, 除了在自己使用过程中发现的新报错信息, 也可调研哪些报错最为常见
  • 逐步改进中文信息. 比如只能将list(而非"int")联结到list => 只能将列表(而非整数)联结到列表
  • 上文提到的通过"定制sys.excepthook"实现尚未研究. 如无明显优势, 打算置后.

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧