从(可能为空的)文件中反序列化
我想创建一个文件,并且即使这个文件是空的,我也能从中读取内容。这样下次我运行程序的时候,这个文件就已经存在了,并且里面会有数据。
#this should create the file
filename = open("roombooking.bin","wb")
#this should load the data into a list but since its first created it should be an empty list
monday=pickle.load(open("roombooking.bin","rb"))
这是我遇到的错误
Traceback (most recent call last):
monday=pickle.load(open("roombooking.bin","rb"))
File "C:\Python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python27\lib\pickle.py", line 880, in load_eof
raise EOFError
EOFError
1 个回答
6
pickle
不是这样工作的:一个空文件不会生成一个空列表。
在一个 pickle 文件中,空列表的样子是这样的:
(lp0
.
如果你想处理成一个空文件能得到一个空列表,你可以使用 try/except 结构:
try:
monday=pickle.load(open("roombooking.bin","rb"))
except EOFError:
monday = []
不过要注意的是,“下次你运行程序的时候”,如果出现这一行 filename = open("roombooking.bin","wb")
,它会 覆盖 这个文件。