Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > recover a partly destroyed pickled structure

Reply
Thread Tools

recover a partly destroyed pickled structure

 
 
Maurizio Berlusconi
Guest
Posts: n/a
 
      09-25-2004
Hi all

I have (my mistake) overwritten the beginning of a file where a long
dictionary was pickled with another (pickled and much smaller) dictionary.
Since only 10% or so of the original and important data was overwritten, I
would be happy if I could somehow recover at least the part that I can
still see.

The situation is now the following. If I open the file in vi I can see :

(dp0
S'011'
p1
(dp2
S'profile'
p3
(lp4
F3.125
aF5.625
aF8.59375
....
#uninteresting data
....
p460
sg36
g6
sg37
S'0:00'
p461
sg39
(lp462
sg41
g6
ss. #after that line starts the data I need
aF10.0
aF10.3125
aF8.125
aF4.84375
aF4.21875
aF5.9375
.....# all data is here until the end
g4
sg215
S'12:26'
p3376
ss.
# end of old important data

Can anybody give an indication on how to do that? I tried to understand
how pickle puts these numbers on the different fields and remove the
unimportant beginning of the file to replace it with something that would
allow to unpickle the data, but did not really succeed. Read the
source (and understand it) is far beyond my python skills...

Any hint or pointer would be appreciated.

Regards,

Maurizio
 
Reply With Quote
 
 
 
 
Mike C. Fletcher
Guest
Posts: n/a
 
      09-25-2004
Each line you quote as "interesting" is an item in a list, denoted by
the line starting with 'a', after that is the type notation ('F', for
float), so if that's all the data you need, you can just do:

values = []
for line in lines:
line = line.strip()
assert line.startswith( 'aF' ), """Line %r doesn't start with
aF"""%(line,)
value = float(line[2:])
values.append( value )

doSomethingWithValues( values )

You can see the formats quite simply by using pickle at the command line:

In [3]: pickle.dumps( [ 2.0, 3.0] )
Out[3]: '(lp0\nF2.0\naF3.0\na.'

HTH,
Mike

Maurizio Berlusconi wrote:

>Hi all
>
>I have (my mistake) overwritten the beginning of a file where a long
>dictionary was pickled with another (pickled and much smaller) dictionary.
>Since only 10% or so of the original and important data was overwritten, I
>would be happy if I could somehow recover at least the part that I can
>still see.
>
>

....

>ss. #after that line starts the data I need
>aF10.0
>aF10.3125
>aF8.125
>aF4.84375
>aF4.21875
>aF5.9375
>....# all data is here until the end
>g4
>sg215
>S'12:26'
>p3376
>ss.
># end of old important data
>
>Can anybody give an indication on how to do that? I tried to understand
>how pickle puts these numbers on the different fields and remove the
>unimportant beginning of the file to replace it with something that would
>allow to unpickle the data, but did not really succeed. Read the
>source (and understand it) is far beyond my python skills...
>
>Any hint or pointer would be appreciated.
>
>Regards,
>
>Maurizio
>
>


--
________________________________________________
Mike C. Fletcher
Designer, VR Plumber, Coder
http://www.vrplumber.com
http://blog.vrplumber.com

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Lost Windows login Password? 6 Ways to Recover and Recover windows Password jamesstevn General Computer Support 0 03-10-2010 03:18 AM
Is there a open souce IDE writen by C( C++) or partly writen by C(C++)? zaley Python 18 02-25-2008 10:49 AM
XSLT: Creating partly expanded navigation menu from full hierarchy Harlan Messinger XML 1 10-12-2007 05:45 PM
Partly Corrupt compact flash card, help required S S Digital Photography 10 06-10-2006 05:26 PM
Partly consistent web pages - How ? John Fitzsimons HTML 3 07-23-2004 06:41 AM



Advertisments