Pickle a list

Rogerio Luz rogeriosantosluz at gmail.com
Mon Mar 7 11:38:43 EST 2011


Hi All

I'd like to pickle an object instance with all values. So I
instanciate myClass and set some values including a list with more
values (in the __init__), then dump to file. I realized that the
pickled object don't saved my new list values (saved only the
"default" value) but saved a String and an int. What I'm doing wrong?
Thanks Rogerio

$ python3 pickler.py P
Dump: ['default', 1, 2, 3, 4, 5, 6, 7, 8, 9] TestStr 19900909

$ python3 pickler.py U
Load: ['default'] TestStr 19900909

# pickler.py

import sys
import pickle

class MyClass:
    teste = 0
    nome = None
    lista = ["default"]

    def __init__(self):
        for reg in range(1,10):
            self.lista.append(reg)
        self.nome = "TestStr"
        self.teste = 19900909

#main
def main(argv):
    if argv[1] == "P":
        with open('myClass.pickle', 'wb') as f:
            myClass = MyClass()
            print("Dump:",myClass.lista, myClass.nome, myClass.teste)
            pickle.dump(myClass, f, pickle.HIGHEST_PROTOCOL)

    elif argv[1] == "U":
        with open('myClass.pickle', 'rb') as f:
            myClass = pickle.load(f)
            print("Load:",myClass.lista, myClass.nome, myClass.teste)

if __name__ == "__main__":
    main(sys.argv)



More information about the Python-list mailing list