All pastes #218767 Raw Edit

Someone

public text v1 · immutable
#218767 ·published 2006-10-24 10:28 UTC
rendered paste body
from code import InteractiveConsole
import sys
import os
import time
import readline

class Console(InteractiveConsole):
    def __init__(self, locals):
        InteractiveConsole.__init__(self, locals)
        self.logfile = 'log.py'
        self.log = None
        self.real_stdout = sys.stdout

    def raw_input(self, prompt=""):
        ret = raw_input(prompt)
        self.log.write(ret.replace('\t','    ') + '\n')
        return ret

    def write(self, data):
        lines = data.splitlines()
        for line in lines:
            if line and not line in (sys.ps1, sys.ps2):
                self.log.write('# ' + line + '\n')
        self.real_stdout.write(data)

    def interact(self):
        print "[ writing log to %s ]" % self.logfile
        self.log = open(self.logfile, 'w')
        self.log.write('#!/usr/bin/python\n')
        self.log.write('# created %s\n\n' % time.strftime('%c'))
        sys.stdout = self
        InteractiveConsole.interact(self)
        sys.stdout = self.real_stdout


def run():
    console = Console({})
    console.interact()