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()