这会产生一个错误:
pickle.load() takes one positional argument (2 given)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import pickle, os.path
created = False
phoneBook = {}
name = input("Please enter a name(or press enter to end input): ")
while name != '':
number = input("Please enter number: ")
phoneBook[name] = number
name = input("Please enter a name(or press enter to end input): ")
if name == '':
print("Thank You!")
print("Your phonebook contains the following entries:")
for name, number in phoneBook.items():
print("%s - %s" % (name, number))
while not created:
if not os.path.isfile('phonebook.json'):
phoneBook_Ori = pickle.load('phonebook.json', 'r')
created = True
else:
phoneBook_Ori = pickle.load('phonebook.json', 'w')
phoneBook_Upd = phoneBook_Ori.update(phoneBook)
phoneBook_Ori.write(phoneBook_Upd)
phoneBook_Ori.close
Run Code Online (Sandbox Code Playgroud)
为什么不酸洗数据?
这不是你使用的方式pickle.load:
phoneBook_Ori = pickle.load('phonebook.json', 'r')
Run Code Online (Sandbox Code Playgroud)
从文件反序列化时,它采用文件对象作为参数,而不是字符串。
试试这个:
# create file object with permissions
with open('phonebook.json', 'r') as f:
# load using pickle de-serializer
phoneBook_Ori = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)
保存几乎相同,请确保您的phonebook范围已更新:
with open('phonebook.json', 'wb') as f:
phoneBook_Ori = pickle.dump(phonebook, f)
Run Code Online (Sandbox Code Playgroud)
至于代码的其余部分,您可能想阅读我给出的另一个非常相似的答案。
| 归档时间: |
|
| 查看次数: |
6325 次 |
| 最近记录: |