I lost the original thread, but my first thought was to use the readline module's history capability to save and reload a "session". This hack partially works for what little testing I've done (place it in sitecustomize.py): import readline import os import sys _start_len = len(open(os.path.expanduser("~/.pyhist")).readlines()) _session_file = os.path.expanduser("~/.pysession") def save(f=_session_file, start=_start_len): sf = open(f, 'w') while True: line = readline.get_history_item(start) start += 1 if line is None: break if line.startswith('save(') or line.startswith('load('): continue sf.write(line+"\n") def load(f=_session_file): execfile(f, sys._getframe(-1).f_globals) import __builtin__ __builtin__.save = save __builtin__.load = load My readline history is stored in ~/.pyhist. I can't use readline.get_history_length() to mark the start of a session for reasons which are not obvious to me. When I first started futzing around with it, readline.get_history_length() returned 9934. Now, even though my ~/.pyhist file has more than 9960 lines, get_history_length() seems to always return -1, thus making it useless in this context. Here's a simple session showing save() and load() within the same session: >>> import math >>> print math.sin(47) 0.123573122745 >>> def f(): ... return math.sin(48) ... >>> save() >>> load() 0.123573122745 >>> f <function f at 0x431830> >>> f() -0.76825466132366682 Note that f may not be a new f, however. A call to load() in a fresh session fails to place 'f' in the session's globals. I'm not sure why. Any ideas? Skip
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4