文章说明

编程过程中,出现BUG不可避免,所以经常要进行调试.
在廖雪峰的python3教程中,有一篇专门讲调试的文章,简单列举了调试的几种方法,建议先进行阅读,了解一下。

为更方便新手学习,我结合自身开发情况,进一步补充一下。

一.print大法

如果不是确定要记录到日志,一般用的最多的还是print。
print()内置函数,一般最初学习python的时候,就接触到了,这里再列举一下几种调试常用的print用法。

1.直接打印数字
print(111111111)

2.直接打印文字
print("进来了")

3.直接打印变量
print(name)

4.打印文字+变量
print("进来了"+name)

5.打印文字+变量
print("进来了" , name)

6.打印文字+变量
print("进来了,名字是%s,年龄是%d" % (name , age))

二.IDE断点调试

如图所示,为PyCharm的调试。
(注:图为网页分享,并非原创。找不到原图链接了,抱歉。)

三.终极武器logging

python有一个标准库logging,用来管理日志。
通过整个标准库,可以进一步构建自己的日志模块。
如下是一个自定义的日志模板。
(注:整个模块是网友分享,并非原创。找不到原文链接了,抱歉。)

import time
import logging
from logging.handlers import TimedRotatingFileHandler
####################################
#日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。print_level = logging.DEBUG    #打印级别控制
file_path = "D:/TestDemo/"        #定义日志存放路径
file_name = time.strftime('%Y%m%d', time.localtime(time.time()))  #文件名称####################################
class Log():# 构造函数def __init__(self, name):self.filename = file_path + file_name + '.log'  # 日志文件名称self.name = name  # 为%(name)s赋值#创建日志器self.logger = logging.getLogger(self.name)# 控制记录级别self.logger.setLevel(print_level)# 控制台日志self.console_handler   = logging.StreamHandler()console_format = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s[line:%(lineno)d] - %(message)s')self.console_handler.setFormatter(console_format)# 文件日志self.filetime_handler  = TimedRotatingFileHandler(self.filename, 'D', 1, 30) #保留30天,1月保存一个文件file_format = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s[line:%(lineno)d] - %(message)s')self.filetime_handler.setFormatter(file_format)# 为logger添加的日志处理器self.logger.addHandler(self.console_handler)self.logger.addHandler(self.filetime_handler)#测试def debug(self, msg):self.logger.debug(msg)#信息def info(self, msg):self.logger.info(msg)#警告def warning(self, msg):self.logger.warning(msg)#错误def error(self, msg):self.logger.error(msg)#重大错误def critical(self, msg):self.logger.critical(msg)#抛出异常def exception(self, msg):self.logger.exception(msg)#关闭控制台日志def close_console(self):self.logger.removeHandler(self.console_handler)# 关闭文件日志def close_filetime(self):self.logger.removeHandler(self.filetime_handler)

本文如有帮助,敬请留言鼓励。
本文如有错误,敬请留言改进。

python 调试技巧相关推荐

  1. chatgpt赋能python:Python调试技巧:如何使用断点运行程序

    Python调试技巧:如何使用断点运行程序 在Python编程中,程序出现错误或需要调试时,我们需要一些工具来帮助我们定位问题和修复代码.其中之一就是使用断点来运行程序.接下来我们将讨论如何在Pyth ...

  2. 转:Python 代码调试技巧

    Python 代码调试技巧 转载于:https://www.cnblogs.com/kira2will/p/4254754.html

  3. Python Debug调试技巧

    ------·今天是2020年的第14天·------ 这是ITester软件测试小栈第89次推文 Debug 对于任何coding人士都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中 ...

  4. python高级调试技巧(一)——原生态的pdb调试

    声明:本文所讲的调试是指不附带任何工具的调试,我们平时使用vs code,pycharm进行调试,包括设置断点.单步执行.多步执行等操作都是IDE设置好的,本文不考虑这些,使用原生态的python调试 ...

  5. 《Debug Hacks》和调试技巧

    Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中文版<Debug Hacks中文版-深入调试的技术和工具>.这本书涉及了很多调试技巧,对调试器使用.内核 ...

  6. 《Debug Hacks》和调试技巧【转】

    转自:https://blog.csdn.net/sdulibh/article/details/46462529 Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中 ...

  7. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...

  8. python timeit用法_十大Python开发技巧

    Python开发指南, 超级实用足以让您震撼 > Photo by Christina Morillo from StockSnap 时不时地,当我了解Python的新功能时,或者我发现其他一些 ...

  9. python小技巧积累--题库(持续更新)

    介绍 作为一名程序员,除了需要具备解决问题的思路以外,代码的质量和简洁性也很关键. python内置库中就有很多简洁而又优雅的操作,这里的知识都来源于网络积累, 闲暇时整理下来方便温故. 目录 > ...

  10. python调试教程_python进阶教程之==、is和调试

    ==.is 总结 is 是比较两个引用是否指向了同一个对象(引用比较).== 是比较两个对象是否相等. 调试 pdb pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++). 命令简写 ...

最新文章

  1. mysql keepalived低版本_Mysql+keepalived主主切换
  2. 线性表List的基本创建
  3. python虚拟环境管理app_pyenv虚拟环境管理python多版本和软件库
  4. HTML通知、新闻等文字列表的无缝滚动效果
  5. Power-- 1.charge Fuel gauge
  6. linux dup用法,Unix_Linux
  7. oracle更改字段名顺序的方法
  8. iOS - 数据的归档和反归档
  9. 社区医学的研究方法:调查、流行病学研究、方案评估、临床试验Research Methods in Community Medicine: Surveys, Epidemiological Resear
  10. SmartRF Flash Programmer1.6.2打不开程序界面问题
  11. VS2010 书签 工具的使用方法
  12. poj 1164城堡问题(DFS)
  13. 人工智能ai以算法为基础_IT团队如何为AI项目奠定正确的基础
  14. 人物传记思维导图模板
  15. BiliBili下载助手
  16. 嵌入式Linux —— usb鼠标驱动
  17. pytest 运行出现collected 0 items
  18. 离线语音交互技术路线之语音合成(TTS)篇
  19. 单峰数组求第k大算法
  20. java for mobil,Windows Mobile上的Java(ME)

热门文章

  1. 一些同样适用于人生的计算机原理
  2. 怎么用xmind整理我们获取的杂乱的信息
  3. myBatis + SpringMVC上传、下载文件
  4. android:AIDL
  5. asp.net onclick与onclientclick的区别
  6. xcode 4 配置svn问题
  7. 公司绝不会告诉你的20大秘密 转载
  8. tcp/udp/socket 端口映射,转发小工具
  9. 习题4-8 高空坠球(20 分)
  10. 2014.9.20CSS样式表