在python中使用pickle和for循环从文件中读取

Hos*_*ein 11 python pickle

我有一个文件,我已经转储了大量的lists.Now我想将此文件加载到内存并使用其中的数据.我试图使用"pickle"的"加载"方法加载我的文件,但是,出于某种原因,它只是给了我文件中的第一项.实际上我注意到它只将我的第一个列表加载到内存中,如果我想加载我的整个文件(多个列表),那么我必须迭代我的文件并在每个文件中使用"pickle.load(filename)"迭代我采取.问题是我不知道如何用循环(for或while)实际实现它,因为我不知道何时到达文件的末尾.一个例子对我帮助很大.谢谢

eum*_*iro 10

这个怎么样:

lists = []
infile = open('yourfilename.pickle', 'r')
while 1:
    try:
        lists.append(pickle.load(infile))
    except (EOFError, UnpicklingError):
        break
infile.close()
Run Code Online (Sandbox Code Playgroud)

  • 现代Python应该使用`while True`来实现无限循环.在Python代码中使用了`while 1`,它早于PEP 285,它为语言添加了"True". (4认同)
  • 你应该__never__使用`除了:`; 总是指定你想要捕获的异常(例如`除了PicklingError:`).此外,无限循环的Python习语是"1",尽管这是一个非常挑剔的=). (2认同)