[Python-Dev] save()/load() (original) (raw)
Skip Montanaro skip at pobox.com
Mon Dec 1 15:35:33 EST 2003
- Previous message: [Python-Dev] possible backward incompatibility in test.regrtest
- Next message: [Python-Dev] save()/load()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-Dev] possible backward incompatibility in test.regrtest
- Next message: [Python-Dev] save()/load()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]