Resuming a program's execution after correcting error
Sheldon
shejo284 at gmail.com
Wed Oct 4 07:29:31 EDT 2006
MRAB wrote:
> Sheldon wrote:
> > MRAB wrote:
> > > Sheldon wrote:
> > > > Hi.
> > > >
> > > > Does anyone know if one can resume a python script at the error point
> > > > after the error is corrected?
> > > > I have a large program that take forever if I have to restart from
> > > > scratch everytime. The error was the data writing a file so it seemed
> > > > such a waste if all the data was lost and must be recalculated again.
> > > >
> > > You could modify the program while you're debugging it so that instead
> > > of, say:
> > >
> > > calculate data
> > > write data
> > >
> > > you have:
> > >
> > > if saved data exists:
> > > load data
> > > else:
> > > calculate data
> > > save data
> > > write data
> > >
> > > The pickle module would be useful here.
> > >
> > > Matthew
> >
> > I like your idea Matthew but I don't know how to pickle the many
> > variables in one file. Do I need to pickle each and every variable into
> > a seperate file?
> > var1,var2
> > pickle.dump(var1,f)
> > pickle.dump(var2,f2)
> >
> Using the 'pickle' module:
>
> # To store:
> f = open(file_path, "wb")
> pickle.dump(var1, f)
> pickle.dump(var2, f)
> f.close()
>
> # To load
> f = open(file_path, "rb")
> var1 = pickle.load(f)
> var2 = pickle.load(f)
> f.close()
>
> A more flexible alternative is to use the 'shelve' module. This behaves
> like a dict:
>
> # To store
> s = shelve.open(file_path)
> s["var1"] = "first"
> s["var2"] = [2, 3]
> s.close()
>
> # To load
> s = shelve.open(file_path)
> print s["var1"] # This prints "first"
> print s["var2"] # This prints [2, 3]
> s.close()
>
> Hope that helps
> Matthew
Perfect Matthew!
Much obliged!
/Sheldon
More information about the Python-list
mailing list