Hi, I am using 64 bit Python on an x86_64 platform (Fedora 13). I have some code that uses the python marshal module to serialize some objects to files. However, in moving the code to python 3 I have come across a situation where, if more than one object has been serialized to a file, then while trying to de-serialize only the first object is de-serialized. Trying to de-serialize the second object raises an EOFError. De-serialization of multiple objects works fine in Python 2.x. I tried going through the Python 3 documentation to see if marshal functionality has been changed, but haven't found anything to that effect. Does anyone else see this problem? Here is some example code:
bash-4.1$ cat marshaltest.py import marshal numlines = 1 numwords = 25 stream = open('fails.mar','wb') marshal.dump(numlines, stream) marshal.dump(numwords, stream) stream.close() tmpstream = open('fails.mar', 'rb') value1 = marshal.load(tmpstream) value2 = marshal.load(tmpstream) print(value1 == numlines) print(value2 == numwords) Here are the results of running this code bash-4.1$ python2.7 marshaltest.py True True bash-4.1$ python3.1 marshaltest.py Traceback (most recent call last): File "marshaltest.py", line 13, in <module> value2 = marshal.load(tmpstream) EOFError: EOF read where object expected Interestingly the file created by using Python 3.1 is readable by both Python 2.7 as well as Python 2.6 and both objects are successfully read. Cheers, raj -- http://mail.python.org/mailman/listinfo/python-list