(top-posting and offline response fixed)

On Sun, Feb 3, 2013 at 11:07 PM, Dave Angel <da...@davea.name> wrote:
On 02/03/2013 02:26 PM, Spyros Charonis wrote:

Hello Pythoners,

I am experiencing a strange result with the pickle module when using it to
write certain results to a separate file.

In short, I have a program that reads a file, finds lines which satisfy
some criteria, and extracts those lines, storing them in a list. I am
trying to write this list to a separate file.

The list of extracted lines looks like this:

ATOM      1  N   GLN A   1      29.872  13.384  54.754  1.00 60.40
    N

ATOM      2  CA  GLN A   1      29.809  11.972  54.274  1.00 58.51
    C

ATOM      3  C   GLN A   1      28.376  11.536  54.029  1.00 55.13
    C

The output stored from the call to the pickle.dump method, however, looks
like this:

(lp0
S'ATOM      1  N   GLN A   1      29.872  13.384  54.754  1.00 60.40
      N  \r\n'
p1
aS'ATOM      2  CA  GLN A   1      29.809  11.972  54.274  1.00 58.51
      C  \r\n'
p2
aS'ATOM      3  C   GLN A   1      28.376  11.536  54.029  1.00 55.13
      C  \r\n'

The code I am using to write the output to an external file goes as
follows:

def export_antibody_chains():
''' EXPORT LIST OF EXTRACTED CHAINS TO FILE '''
chains_file = open(query + '_Chains', 'wb')
pickle.dump(ab_chains, chains_file)  # ab_chains is global
chains_file.close()
return

Does anyone know why the strings lp0, S', aS' are showing up?



Pickle stores the type of each variable, as well as the value, and stores
it in a way as to make it easy to "unpickle" it.



On 02/03/2013 06:17 PM, Spyros Charonis wrote:
Thank you Dave,

Is there any way to circumvent this so that I get the list rendered
normally? Many thanks.


You'd better define "normally." Pickle's output is normal for pickle. Perhaps you want the values to be human readable instead.

One possibility of many: If you know that all the values in the list are strings, and you want to produce a text file, with one such string per line, then try:

    outfile = open( "filename.txt", 'wt")
    for line in mylist:
        outfile.write( line + "\n")
    outfile.close()

There are ways to clean that up, but since you haven't specified your python version, that'll do for a first attempt.

--
DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to