一个 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:
官网地址:https://pypi.org/project/pip/#downloads; 下载完毕后,解压
- 打开命令行窗口,进入到pip解压后的目录;执行代码
python3 setup.py install
进行安装,
安装完成后,将pip加入到系统环境变量中
- 打开命令行窗口,进入到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上开源,具体使用可以查看它的使用文档