Code: Select all
import pickle
class configuration_data(object):
def __init__(self):
self.flashlight=True # by default flashlight on
self.hour_start=0 # inhibit alarm hour start
self.minute_start=0
self.hour_end=0 # inhibit alarm hour
self.minute_end=0
self.inhibit_time=False
def print_configuration(self):
print('Flashlight on? ',self.flashlight)
print('Inhibit time set? ',self.inhibit_time)
print('Inhibit time start ',self.hour_start,':',self.minute_start)
print('Inhibit time end ',self.hour_end,':',self.minute_end)
configuration=configuration_data() #create configuration object
print('Configuration ', configuration)
configuration.print_configuration()
try:
configuration_file=open('configuration', 'rb')
configuration=pickle.load(configuration_file)
configuration_file.close()
print('configuration loaded ')
configuration.print_configuration()
except:
print('Creating configuration file')
configuration_file=open('configuration','wb')
pickle.dump(configuration,configuration_file,protocol=None)
configuration_file.close()
try:
configuration_file=open('configuration', 'rb')
configuration=pickle.load(configuration_file)
configuration_file.close()
print('configuration loaded with defaults')
configuration.print_configuration()
except:
print('Configuration load failed')
Creating configuration file
Traceback (most recent call last):
File "main.py", line 1, in <module>
File "main1.py", line 830, in <module>
TypeError: unexpected keyword argument 'protocol'
Omitting the protocol parameter:
Code: Select all
import pickle
class configuration_data(object):
def __init__(self):
self.flashlight=True # by default flashlight on
self.hour_start=0 # inhibit alarm hour start
self.minute_start=0
self.hour_end=0 # inhibit alarm hour
self.minute_end=0
self.inhibit_time=False
def print_configuration(self):
print('Flashlight on? ',self.flashlight)
print('Inhibit time set? ',self.inhibit_time)
print('Inhibit time start ',self.hour_start,':',self.minute_start)
print('Inhibit time end ',self.hour_end,':',self.minute_end)
configuration=configuration_data() #create configuration object
print('Configuration ', configuration)
configuration.print_configuration()
try:
configuration_file=open('configuration', 'rb')
configuration=pickle.load(configuration_file)
configuration_file.close()
print('configuration loaded ')
configuration.print_configuration()
except:
print('Creating configuration file')
configuration_file=open('configuration','wb')
pickle.dump(configuration,configuration_file)
configuration_file.close()
try:
configuration_file=open('configuration', 'rb')
configuration=pickle.load(configuration_file)
configuration_file.close()
print('configuration loaded with defaults')
configuration.print_configuration()
except:
print('Configuration load failed')
Configuration <configuration_data object at 3f94f4b0>
Flashlight on? True
Inhibit time set? False
Inhibit time start 0 : 0
Inhibit time end 0 : 0
Creating configuration file
Configuration load failed
>>> import pickle
>>> help(pickle)
object <module 'pickle' from '/lib/pickle.py'> is of type module
HIGHEST_PROTOCOL -- 0
dump -- <function dump at 0x3f94c180>
__name__ -- pickle
__file__ -- /lib/pickle.py
dumps -- <function dumps at 0x3f94c250>
load -- <function load at 0x3f94c0b0>
loads -- <function loads at 0x3f94c0c0>
>>>
pickle was installed by:
upip.install('pickle')
I've used pickle on Pi's happily.
What am I doing wrong?
Or have I the wrong pickle?
Alternatively I'll serialise a simple dictionary rather than binary object
I've probably stupidly overlooked something
Robin