当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟。

先上代码和效果,再说明。

import sys,traceback
class mystdout:stdout = sys.stdoutdef write(self,_str):if _str != '\n':filepath,lineno = traceback.extract_stack()[-2][0:2]mystdout.stdout.write("%s\t%s(%s)\n"%(_str,filepath,lineno))sys.stdout = mystdout()print 'foo'
print 'bar'

输出
foo test_stdout.py(11)
bar test_stdout.py(12)

当print 'foo'的时候,会调用sys.stdout.write(),不过因为sys.stdout = mystdout(),被重写了,所以实际调用的是mystdout类的write()方法。
在python中print会自动加换行符'\n',而且是单独sys.stdout.write('\n'),所以要if _str != '\n'。
再加上traceback获得文件名和行号,这样控制台的每个输出都能快速定位到在哪里print的了。

飘逸的python - hack输出流便于调试相关推荐

  1. python hack js_飘逸的python - hack输出流便于调试

    当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟. 先上代码和效果,再说明. import sys,traceback class my ...

  2. python示例异常处理与程序调试_笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  3. Python如何实现单步调试

    Python如何实现单步调试 https://www.cnblogs.com/jing1617/p/9396617.html https://www.cnblogs.com/xiaohai2003ly ...

  4. python编程(pdb调试)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很长时间,我都以为python是没有单步调试的.也就是说,使用python不能像使用c一样快乐地 ...

  5. Python之pdb代码调试

    调试程序对于开发人员是一项非常重要的技能,它使得我们能够查看程序的运行过程,帮助我们准确的定位程序中的错误. 然而,令人意外的是,无数的Python工程师居然不知道如何对Python代码进行单步调试, ...

  6. 【python基础】断点调试pdb模块简易使用

    文章目录 前言 代码内使用 命令行使用 前言 断点调试是程序基础,pdb是Python自带的调试器,可以帮助我们在代码中设置断点,并且提供了一些命令来帮助我们在程序执行时进行调试. 代码内使用 以下是 ...

  7. python文档测试_【Python入门】19.调试器pdb、单元测试unittest和文档测试doctest

    笔记更新于2019年12月4日, 摘要:各种调试方法介绍assert.logging.调试器pdb:单元测试unittest的编写方法.如何运行单元测试:文档测试doctest的编写 写在前面:为了更 ...

  8. python设置断点_python调试 设置断点

    原博文 2013-12-09 11:29 − 1在所需要调试的地方加入如下代码: import pdb pdb.set_trace() 2调试代码常用命令: 实例请见参考文献: 1http://www ...

  9. vscode之python框架flask 断点调试的配置(官方推荐的配置,务必注意端口)

    flask的配置务必注意端口,默认端口5000如果被占用,你访问的数据无法返回,请更换端口! 更多细节配置,看官方文档,最权威:Debugging configurations for Python ...

最新文章

  1. ATS和闰秒那些事儿
  2. LeetCode 动态规划(Dynamic programming)系列题目--C++,Python解法
  3. http协议、模块、express框架以及路由器、中间件和mysql模块
  4. 一个网站拿下机器学习优质资源!搜索效率提高 50%
  5. 《机器学习》 周志华学习笔记第四章 决策树(课后习题)python 实现
  6. laravel increment出现了翻倍递增_中国股市:如何判断“强庄股”的出现,看懂主力心甘情愿送钱上门...
  7. Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
  8. 越狱解决iphone4s外放无声音
  9. pytorch learning
  10. 大杂烩 -- Iterator 和 Iterable 区别和联系
  11. 使用超大电路集成的计算机,使用超大规模集成电路制造的计算机应该归属于()...
  12. 主板检测卡c5_主板检测卡显示的代码都是什么
  13. 详解二叉树的递归遍历与非递归遍历——(二)
  14. mobilenet cpu 加速_UP手游加速器苹果版下载安装-UP手游加速器iOS苹果版下载
  15. MSDP配置(anycast RP)
  16. ## 微星gl63笔记本安装ubuntu18.04双系统
  17. 超声波测距仪编程_超声波测距详细资料及程序代码
  18. 51单片机按键:短按,长按,按下执行松开停止
  19. EXCEL-VBA:EXCEL的各种文件名获取
  20. 中国版权力的游戏构思

热门文章

  1. 解决问题的策略-分而治之
  2. TODO:从数据库中随机抽取一条记录
  3. Eclipse利用Maven2搭建SpringMVC框架的Web工程
  4. 想了好久 请多多指教
  5. MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
  6. virtualenv模块使用
  7. Python数据结构和算法
  8. JCheckbox全选
  9. 将一个压缩文件分成多个压缩文件;RAR文件分卷
  10. Debian7 apt源设置