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

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

  • 相关阅读:
    恶意代码分析实战-确认EXE什么时候编译的
    恶意代码分析-工具收集
    Bug Bounty Reference
    [ Mongodb ] 问题总汇
    [ kvm ] 四种简单的网络模型
    [ kvm ] 进程的处理器亲和性和vCPU的绑定
    虚拟化概念总结
    centos7安装tengine强制使用HTTPS访问
    [ SSH 两种验证方式原理 ]
    [ Centos 7 iscsi搭建 及 1台客户端同时挂载多台iscsi服务端问题 ]
  • 原文地址:https://www.cnblogs.com/think1988/p/4628161.html
Copyright © 2011-2022 走看看