How to redirect stderr in Python?

前端 未结 10 959
暖寄归人
暖寄归人 2020-11-27 06:19

I would like to log all the output of a Python script. I tried:

import sys

log = []

class writer(object):
    def write(self, data):
        log.append(dat         


        
10条回答
  •  孤城傲影
    2020-11-27 07:13

    I have a piece of software I wrote for work that captures stderr to a file like so:

    import sys
    sys.stderr = open('C:\\err.txt', 'w')
    

    so it's definitely possible.

    I believe your problem is that you are creating two instances of writer.

    Maybe something more like:

    import sys
    
    class writer(object):
        log = []
    
        def write(self, data):
            self.log.append(data)
    
    logger = writer()
    sys.stdout = logger
    sys.stderr = logger
    

提交回复
热议问题