Python 正在从(可能为空)文件中取消勾选

Python 正在从(可能为空)文件中取消勾选,python,pickle,Python,Pickle,所以我试图创建一个文件并从中读取,即使它是空的。因此,下次我运行该程序时,该文件将已经存在,并且其中将包含数据 #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("roombo

所以我试图创建一个文件并从中读取,即使它是空的。因此,下次我运行该程序时,该文件将已经存在,并且其中将包含数据

#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

pickle
不是这样工作的:空文件不会创建空列表

在pickle文件中,空列表如下所示:

(lp0
.
如果要处理它以使空文件导致空列表,可以使用try/except块:

try:
    monday=pickle.load(open("roombooking.bin","rb"))
except EOFError:
    monday = []

但是,请注意,“下次运行程序时”,如果出现行
filename=open(“roombooking.bin”,“wb”)
,它将覆盖该文件。

pickle
不会以这种方式工作:空文件不会创建空列表

在pickle文件中,空列表如下所示:

(lp0
.
如果要处理它以使空文件导致空列表,可以使用try/except块:

try:
    monday=pickle.load(open("roombooking.bin","rb"))
except EOFError:
    monday = []

但是,请注意,“下次运行程序时”,如果出现行
filename=open(“roombooking.bin”,“wb”)
,它将覆盖该文件。

pickle
不会以这种方式工作:空文件不会创建空列表

在pickle文件中,空列表如下所示:

(lp0
.
如果要处理它以使空文件导致空列表,可以使用try/except块:

try:
    monday=pickle.load(open("roombooking.bin","rb"))
except EOFError:
    monday = []

但是,请注意,“下次运行程序时”,如果出现行
filename=open(“roombooking.bin”,“wb”)
,它将覆盖该文件。

pickle
不会以这种方式工作:空文件不会创建空列表

在pickle文件中,空列表如下所示:

(lp0
.
如果要处理它以使空文件导致空列表,可以使用try/except块:

try:
    monday=pickle.load(open("roombooking.bin","rb"))
except EOFError:
    monday = []

但是,请注意,“下次运行程序时”,如果出现行
filename=open(“roombooking.bin”,“wb”)
,它将覆盖该文件。

听到这一点,我开始怀疑“下次”文件中“将”的数据是否也会导致问题。您知道您只能使用
pickle
(或完全符合其要求的任何其他东西)在那里写入,并且它对恶意数据不安全吗?请注意
open()
返回一个
文件
对象,而不是文件名,并且以
模式“wb”打开文件
将覆盖任何现有文件的内容,从而有效清空该文件。@ivan yeah可以分配任务。@martineau关于如何分配该文件的任何建议?如David Robinson的回答所示,首先尝试阅读该文件——您也可以在
中创建该文件,但EOFError:
子句除外。如果没有更多关于你正在做什么的信息,很难建议如何开始创建它。注意:另一种方法是在尝试使用打开文件之前测试文件是否存在。这种习惯用法被称为“三思而后行”(look-before-leap)方法。听到这句话,我开始怀疑“下次”文件中“将”的数据是否也会引起问题。您知道您只能使用
pickle
(或完全符合其要求的任何其他东西)在那里写入,并且它对恶意数据不安全吗?请注意
open()
返回一个
文件
对象,而不是文件名,并且以
模式“wb”打开文件
将覆盖任何现有文件的内容,从而有效清空该文件。@ivan yeah可以分配任务。@martineau关于如何分配该文件的任何建议?如David Robinson的回答所示,首先尝试阅读该文件——您也可以在
中创建该文件,但EOFError:
子句除外。如果没有更多关于你正在做什么的信息,很难建议如何开始创建它。注意:另一种方法是在尝试使用打开文件之前测试文件是否存在。这种习惯用法被称为“三思而后行”(look-before-leap)方法。听到这句话,我开始怀疑“下次”文件中“将”的数据是否也会引起问题。您知道您只能使用
pickle
(或完全符合其要求的任何其他东西)在那里写入,并且它对恶意数据不安全吗?请注意
open()
返回一个
文件
对象,而不是文件名,并且以
模式“wb”打开文件
将覆盖任何现有文件的内容,从而有效清空该文件。@ivan yeah可以分配任务。@martineau关于如何分配该文件的任何建议?如David Robinson的回答所示,首先尝试阅读该文件——您也可以在
中创建该文件,但EOFError:
子句除外。如果没有更多关于你正在做什么的信息,很难建议如何开始创建它。注意:另一种方法是在尝试使用打开文件之前测试文件是否存在。这种习惯用法被称为“三思而后行”(look-before-leap)方法。听到这句话,我开始怀疑“下次”文件中“将”的数据是否也会引起问题。您知道您只能使用
pickle
(或完全符合其要求的任何其他东西)在那里写入,并且它对恶意数据不安全吗?请注意
open()
返回一个
文件
对象,而不是文件名,并且以
模式“wb”打开文件
将覆盖任何现有文件的内容,从而有效清空该文件。@ivan yeah可以分配任务。@martineau关于如何分配该文件的任何建议?如David Robinson的回答所示,首先尝试阅读该文件——您也可以在
中创建该文件,但EOFError:
子句除外。如果没有更多关于你正在做什么的信息,很难建议如何开始创建它。注:另一种方法是在测试之前测试文件是否存在