从(可能为空的)文件中反序列化

0 投票
1 回答
7916 浏览
提问于 2025-04-28 19:59

我想创建一个文件,并且即使这个文件是空的,我也能从中读取内容。这样下次我运行程序的时候,这个文件就已经存在了,并且里面会有数据。

#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"),它会 覆盖 这个文件。

撰写回答