python知识点-pysnooper用于调试

364 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情

一个 GitHub 热门开源项目:PySnooper

PySnooper 是一个非常方便的调试器。 如果你想知道哪些行代码是正常运行,哪些行不正常。据说大多数人会在可疑位置使用 print 输出语句。。

现在,有了PySnooper。它能告诉您哪些代码正在运行,以及局部变量的值是什么。

其实,PySnooper 就是替代了一行一行print的重复性工作,给你的代码一个pysnooper装饰器,它能自动识别到语句和变量并将其值print出来:

PySnooper是个开源项目,使用前需要先安装;

安装Pysnooper

安装方式推荐有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

安装pip:

  • 安装python; 这个是必须安装的;

  • 下载pip:

    官网地址:pypi.org/project/pip…; 下载完毕后,解压

  • 打开命令行窗口,进入到pip解压后的目录;执行代码

    python3 setup.py install
    进行安装, 安装完成后,将pip加入到系统环境变量中

  • 验证 打开命令行窗口,输入pip list 或者pip3 list 在这里插入图片描述

以上只针对于windows系统,其他系统也可以参考;

  • 安装所需库: 打开命令行窗口,输入执行以下代码,并回车

    pip install pysnooper

    等待提示安装成功既可; 在这里插入图片描述

使用Pysnooper:

- 打印变量

在一个函数上添加一个装饰器即可

在这里插入图片描述

执行以上代码,输出如下:

在这里插入图片描述 可以看到,它将每一行变量的值都输出到屏幕上,仅写一行代码—使用装饰器就可以实现这个方便的调试功能,不用一行行写print了;

- 输出到日志

如果你觉得print到屏幕上不方便,还可以将其输出到log文件中;只需打开装饰器,并将输出重定向到一个专用的日志文件,将日志文件路径指定为第一个参数。

@pysnooper.snoop('H:/tx/001/test.log')

在这里插入图片描述

用 with 块包装上下文的形式调试

如果你不想追踪整个函数,那可以用 with 块包装你想追踪的那部分;

在这里插入图片描述

输出结果如下:

Source path:... h:/code100/011-pysnooper.py
New var:....... img_path = 'H:/tx/001/img_001.png'
New var:....... new_img_path = 'H:/tx/001/new_001.png'
New var:....... os = <module 'os' from 'D:\\python3.8\\lib\\os.py'>
New var:....... Image = <module 'PIL.Image' from 'D:\\python3.8\\lib\\site-packages\\PIL\\Image.py'>
New var:....... target_size = 307200
New var:....... quality = 80
New var:....... step = 10
New var:....... current_img = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=540x960 at 0x33E01D8>
22:10:06.934350 line        21         current_size = os.path.getsize(img_path)  # 初始化当前大小为原图片大小
Elapsed time: 00:00:00.001000

总结

PySnooper在github上开源,具体使用可以查看它的使用文档