saving and reloading variables for interactive work

Darren Dale dd55 at cornell.edu
Wed Jul 28 20:48:32 CEST 2004


> 
> Unfortunately, there is no quick & easy way to do this in Python, since 
> there is no easy way to differentiate unpicklable things (such as modules 
> and functions) from picklable ones (your variables), nor to make Pickle 
> gracefully ignore such objects.  If you can get all your variable names 
> into a list, however, you could use this code:
> 

Could you determine the picklable types using something like this? Its 
kinda ugly, but maybe something related would work:

myvars = {}
for key in vars().keys():
	myvar = vars()[key]
	if str(type(myvar)) == "<type 'module'>": pass
	elif: str(type(myvar)) == "<type 'function'>": pass
	elif: str(type(myvar)) == "<type 'unpicklable'>": pass
	else: myvars.update({key:myvar})

pickle.dump(myvars,open('myvars','wb'),-1)


Maybe a try/except would be appropriate, but the pickle docs ay that an 
unspecified number of bytes may have been written to the file before the 
PicklingError exception is raised.

Further comments would be greatly appreciated.



More information about the Python-list mailing list