/
delicious_pickles.py
84 lines (63 loc) · 1.61 KB
/
delicious_pickles.py
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
class Person:
def __init__(self, name):
self.name = name
'''
class Person:
__slots__ = ['name']
def __init__(self, name):
self.name = name
def __getstate__(self):
state = (None, {'name' : self.name})
return state
'''
def demonstrate():
import pickle
p1 = Person('Guido van Rossum')
with(open('bdfl.pickle', 'wb')) as f:
pickle.dump(p1, f, protocol=0)
with(open('bdfl.pickle', 'rb')) as f:
p2 = pickle.load(f)
print(p2.name)
def inspect():
import my_pickle as pickle
import pickletools
p1 = Person('Guido van Rossum')
pickled = pickle.dumps(p1, protocol=0)
pickled = pickletools.optimize(pickled)
print(str(pickled)[2:-2].replace('\\n', '\n'))
pickletools.dis(pickled)
p2 = pickle.loads(pickled)
return p2
def hello_world():
import pickle
with(open('hello_world.pickle', 'rb')) as f:
p = pickle.load(f)
def fizzbuzz():
import pickle
with(open('fizzbuzz.pickle', 'rb')) as f:
p = pickle.load(f)
def make_fizzbuzz():
import marshal
import base64
def foo():
for i in range(1, 16):
if i % 15 == 0:
print('FizzBuzz')
elif i % 3 == 0:
print('Fizz')
elif i % 5 == 0:
print('Buzz')
else:
print(str(i))
b64encoded = base64.b64encode(marshal.dumps(foo.__code__))
print("""ctypes
FunctionType
(cmarshal
loads
(cbase64
b64decode
(S{}
tRtRc__builtin__
globals
(tRS''
tR(tR.""".format(str(b64encoded)[1:]))