zoukankan      html  css  js  c++  java
  • 标准输出stdout、标准错误stderr 分类: python python基础学习 2013-06-17 18:08 308人阅读 评论(0) 收藏

    import sys

    for i in range(3):

        sys.stdout.write("Python)

        sys.stderr.write("-----")


    stdout 和 stderr都是类文件对象。它们没有read()方法、只有write()方法,然而,它们仍然是类文件对象,因此你可以将其它任何 (类) 文件对象赋值给它们来重定向其输出


    输出重定向:

    import sys

    print 'Dive in'
    saveout = sys.stdout  #保存当前重定向类文件对象,以便后面还原
    fsock = open('out.log', 'w')
    sys.stdout = fsock   #更改重定向至新建的fsock对象,后续的输出都会被重定向到新建的fsock类文件对象中

    print 'This message will be logged instead of displayed' #将标准输出打印到out.log 文件中
    sys.stdout = saveout # 还原重定向

    print "I am back"
    fsock.close()


    例如你想把print的内容写向一下log文件,你可以这么做

    stdout_bk = sys.stdout  #备份一下标准输出
    sys.stdout = open("xx.log", "w") #标准输出重定向到一个文件

    这样子,print的内容就会全部输向xx.log

    ==================================================================

    linux环境下:

    flog = open("xx.log", "w")

    print >> flog, "sth. to print"

    建议用这种形式的重定向
    一是,所见即所得
    二是,不用备份系统的标准输出


    ==================================================================

    重定向错误信息:

    #stderr.py

    import sys

    fsock = open("error.log",'w')

    sys.stderr = fsock

    print "entering function" # 使用sys.stdout类文件对象。而不是sys.stderr对象

    raise Exception,"this error will be logged"


    [you@localhost kgp]$ python stderr.py
    [you@localhost kgp]$ cat error.log
    Traceback (most recent line last):
      File "stderr.py", line 5, in ?
        raise Exception, 'this error will be logged'
    Exception: this error will be logged

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    软件测试课堂练习
    JSP第一次作业
    安卓第六次作业
    安卓第五次作业
    第四次安卓作业
    JSP第四周
    软件测试课堂练习3.4
    Android数据库表
    Android购物菜单
    Android增删改查
  • 原文地址:https://www.cnblogs.com/think1988/p/4628161.html
Copyright © 2011-2022 走看看