python中显示了一个实用程序,它可以修复可怕的回溯,使它们更具可读性。

tbvaccine的Python项目详细描述


https://www.codeshelter.co/static/badges/badge-flat.svghttps://img.shields.io/badge/code%20style-black-000000.svg

tbvaccine是一个很好地打印python回溯的实用程序。它是自动的 突出你关心的线条,淡化你不关心的线条 回溯中的各种元素,以便于分析。

这是一些截图。这是之前的:

misc/before.png

这是后面的:

misc/after.png

如果在代码中添加钩子或调用tbvaccine,它还可以打印所有 每个堆栈帧中的变量。也就是说,它会变成这样:

misc/before-vars.png

进入这个:

misc/after-vars.png

安装

要安装,请使用pip

pip install tbvaccine

你完了!

全局使用

你可以让tbvaccine把它自己全部插入你的系统,然后把它的触角伸进去 你所有的图书馆,像一个可爱,有用的cthulhu。这样,每一条Python 在你的系统中回溯会很漂亮。只需设置tbvaccine环境 变量为1,就完成了。

例如,对于bash:

export TBVACCINE=1

或鱼:

set -x TBVACCINE=1

用作命令行实用程序

tbvaccine可以通过多种方式从命令行使用。:

python -m tbvaccine myscript.py

或者从你想看的节目中插入stderr:

./myscript.py 2>&1 | tbvaccine

所有的回溯都会很漂亮!

用作Python库

使用tbvaccine作为python库有多种方法。

初始化如下:

from tbvaccine import TBVaccine
tbv = TBVaccine(
    code_dir="/my/code/dir",
    isolate=True
)

code_dir标记我们编码的目录。目录下的文件 在回溯中出现将突出显示。如果不通过,电流 将使用由os.getcwd()返回的目录。

如果isolateFalse,则所有行都是彩色的,code_dir是 忽略。

如果show_varsFalse,则不会在每个堆栈中打印变量 框架。

except块中使用它:

from tbvaccine import TBVaccine
try:
    some_stuff()
except:
    print(TBVaccine().format_exc())

要使其成为打印回溯的默认方式,请使用add_hook()(其中 也接受TBVaccine类所做的任何参数:

import tbvaccine
tbvaccine.add_hook(isolate=False)

1 / 0

砰!瞬间漂亮的回溯。

日志集成

你可以像这样将tbvaccine与日志集成:

class TbVaccineFormatter(logging.Formatter):
    def  formatException(self, exc_info):
        return TBVaccine(isolate=True).format_exc()

sh = logging.StreamHandler()
sh.setFormatter(TbVaccineFormatter('[%(levelname)s] %(asctime)s : %(message)s', '%Y-%m-%d %H:%M:%S'))
logger.addHandler(sh)

结语

这个库还是很新的,如果有什么地方没有,请提供补丁 按计划工作,也请告诉你的朋友!希望有一天 它将在python解释器中实现。

–斯塔夫罗斯

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java结合两个Date实例使用Joda创建datetime   带有POI和FileOutputStream的java Swing应用程序性能问题   Java中是否存在类似于Python的异常?   Java中有界通配符的泛型   使用字符和子字符串的java不同输出   在Java中获取LDAP模式   java自定义类在自身上生成ClassNotFoundException   java连接到从internet到通过LAN连接到internet的系统的serversocket   java如何通过maven在jaxws中使用jaxb插件?   java Kerberos如何获取主体或客户端名称?   java应用服务器中是否有JDBC的单点登录解决方案?   java是存储矩阵值以便以后访问的更好方法   Java等级计算器。开始这门课我需要一些帮助   未找到Android“libc++\u shared.so”中的java OpenCV实现   当我使用web配置部署描述符时使用java。xml。它显示了错误   java为什么我的ArrayList的add方法冲突,如何编辑我的自定义add方法   java创建一个以集合为键的映射?   java如何将用户输入到数字三角形中   为什么Java在读取LinkedHashMap时会自动从字符串转换为整数   类动态创建和读取java类