n行Python代码系列:两行程序判断是否处于Debug模式

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython

一、引言

最近看到好几篇类似“n行Python代码…”的博文,看起来还挺不错,简洁、实用,传播了知识、带来了阅读量,撩动了老猿的心,决定跟风一把,推一个“n行Python代码系列”文章。

在程序运行时,有时需要判断是否Debug模式来决定进行不同的处理,在Python中怎么判断程序是否处于Debug模式呢?今天老猿就写个判断Python程序是否处于Debug模式运行的极简实现。后续更多“n行Python代码系列”文章请参考免费专栏《https://blog.csdn.net/laoyuanpython/category_10858655.html n行Python代码系列》。

二、背景知识

python自带一个名为 pdb 的模块,这个模块为Python程序提供了一个交互式源代码调试器。调试时可以设置断点、单步执行代码、检查堆栈等等。

Python的debug有两种方式: 1.在命令行中运行, 2.在脚本当中运行。两种方式都需要使用pdb模块,在pdb模块中会调用sys.settrace设置系统的跟踪功能,允许在Py​​thon中实现Python源代码调试器,settrace设置后可以使用gettrace()获取设置的跟踪函数。因此判断gettrace函数是否有返回的有效值既可以判断当前运行是否处于调试模式。

三、判断程序是否处于Debug模式的程序实现

根据上面的介绍,只需要使用如下两行代码即可判断程序是否处于Debug模式。

import sys
isDebug = True if sys.gettrace() else False

上述判断不但可以用于Python单脚本在Python IDLE环境或命令行方式执行,也可以在Pycharm等集成环境中使用。例如如下代码:

from  moviepy.editor import *
import sys

isDebug = True if sys.gettrace() else False
if isDebug:
    print("Debug 模式开启")
    clip = VideoFileClip(r"F:\video\fansNote1M_crop.mp4")
    clip = clip.subclip(0,-4)
    clip.write_videofile(r'f:\video\fansNote1M_cropsubclip.mp4')

else:
    print("Debug 模式未开启")
    VideoFileClip(r"F:\video\fansNote1M_crop.mp4").subclip(0,-4).write_videofile(r'f:\video\fansNote1M_cropsubclip2.mp4')

在Pycharm非调试模式执行:

在调试模式执行:

可以看到在集成环境的debug模式非debug模式上述方法都可以清晰区分。

四、小结

本节介绍了判断Python程序是否处于Debug模式运行的原理和实现方法,更多关于Python Debug模式的了解请参考Python手册中介绍程序调试Debug相关章节。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

扫描二维码关注公众号,回复: 12922824 查看本文章

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

如果对文章内容存在疑问,可以在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。
在这里插入图片描述

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

猜你喜欢

转载自blog.csdn.net/LaoYuanPython/article/details/114777079