当我试图修改我的列表,然后加载它时,我得到的错误是:
Traceback (most recent call last):
File "C:\Users\T\Desktop\pickle_process\pickle_process.py", line 16, in <module>
print (library[1])
IndexError: string index out of range
请提出解决方案 我的代码:
import pickle
library = []
with open ("LibFile.pickle", "ab") as lib:
user = input("give the number")
print ("Pickling")
library.append(user)
pickle.dump(user, lib)
lib.close()
lib = open("LibFile.pickle", "rb")
library = pickle.load(lib)
for key in library:
print (library[0])
print (library[1])
这与酸洗无关。我将编写新的示例代码来说明为什么它不起作用。你知道吗
你只是在空名单上加了一件事。为什么你认为有两个因素?:)
如果您多次执行此操作,则会失败,因为您正在以
'ab'
模式而不是'wb'
模式打开pickle文件。每次写入时都应该覆盖pickle。你知道吗这似乎有悖常理,因为您要“附加”到列表中,但请记住,一旦pickle对象,它就不再是列表,而是pickle文件。当您向列表中添加元素时,您实际上并没有附加到文件,而是更改了对象本身!这意味着您需要完全更改文件中写入的内容,以便它用附加的额外元素来描述这个新对象。你知道吗
您正在迭代
load
函数返回的对象,出于某种原因,您试图通过索引访问该对象。更改:收件人:
Library[1]
不存在,因此出现string index out of range
错误。你知道吗相关问题 更多 >
编程相关推荐