File: pickletrouble.py

package info (click to toggle)
pytables 3.10.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,228 kB
  • sloc: ansic: 82,212; python: 65,296; cpp: 753; sh: 394; makefile: 100
file content (27 lines) | stat: -rw-r--r-- 743 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import tables as tb


class MyClass:
    foo = "bar"


# An object of my custom class.
my_object = MyClass()

with tb.open_file("test.h5", "w") as h5f:
    h5f.root._v_attrs.obj = my_object  # store the object
    print(h5f.root._v_attrs.obj.foo)  # retrieve it

# Delete class of stored object and reopen the file.
del MyClass, my_object

with tb.open_file("test.h5", "r") as h5f:
    print(h5f.root._v_attrs.obj.foo)
    # Let us inspect the object to see what is happening.
    print(repr(h5f.root._v_attrs.obj))
    # Maybe unpickling the string will yield more information:
    import pickle

    pickle.loads(h5f.root._v_attrs.obj)
    # So the problem was not in the stored object,
    # but in the *environment* where it was restored.