stderr and stdout

Bernhard Herzog herzog at online.de
Thu Jun 29 16:06:40 EDT 2000


Arinté <jamarijr at my-deja.com> writes:

> Ok, I took care of that stuff do you know of anyway to keep the stdout
> and stderr in sync.

Here's a simple python solution:

import sys, random
    
class Collector:

    def __init__(self):
        self.strings = []

    def write(self, tag, str):
        self.strings.append((tag, str))

    def dump(self):
        for item in self.strings:
            sys.__stdout__.write("%s:%s" % item)

_collector = Collector()

class TaggingOStream:

    def __init__(self, tag):
        self.tag = tag

    def write(self, str):
        _collector.write(self.tag, str)

sys.stdout = TaggingOStream('stdout')
sys.stderr = TaggingOStream('stderr')

def main():
    # Generate some random messages in stderr and stdout
    for i in range(20):
        stream = random.choice((sys.stdout, sys.stderr))
        stream.write("Random message %g\n" % random.random())

main()

_collector.dump()


-- 
Bernhard Herzog   | Sketch, a drawing program for Unix
herzog at online.de  | http://sketch.sourceforge.net/



More information about the Python-list mailing list