zoukankan      html  css  js  c++  java
  • 飘逸的python

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

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

    import sys,traceback
    class mystdout:
        stdout = sys.stdout
        def write(self,_str):
            if _str != '
    ':
                filepath,lineno = traceback.extract_stack()[-2][0:2]
                mystdout.stdout.write("%s	%s(%s)
    "%(_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会自动加换行符' ',而且是单独sys.stdout.write(' '),所以要if _str != ' '。
    再加上traceback获得文件名和行号,这样控制台的每个输出都能快速定位到在哪里print的了。


  • 相关阅读:
    angular 复选框回选
    $parse
    AngularJS 指令的 Scope (作用域)
    文献解读 (1)
    献给初学者:常用的细胞凋亡检测方法
    KofamKOALA
    Dfam.h5.gz下载
    Augustus-3.3.3安装
    bamtools 2.5.1安装
    R语言从原点开始作图
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3220237.html
Copyright © 2011-2022 走看看