我有一个困难的时候,试图保存和更新字典的pickle文件的基础上输入。在运行命令并输入新的show之后,dictionary不会添加新的键和值。为什么?我已经关注了一个月了很多帖子,尝试了一些基本的方法,但是最后总是被覆盖。你知道吗
import pickle
user_settings = {'mjp3LhFUUS8ZM7zW8UV4tHTDyD4=': {'notify': {}}}
user_input = input('Command: ')
def changedict():
if user_input == 'run':
newshow = input("New show: ")
user_notify = user_settings['mjp3LhFUUS8ZM7zW8UV4tHTDyD4=']['notify']
print(user_notify)
user_notify[newshow] = 242525
pickle.dump(user_settings, open("save.p", "wb"))
print(user_settings)
elif user_input == 'read':
readdict = pickle.load(open("save.p", "rb"))
print(readdict)
else:
print('Not a command')
changedict()
当我运行并添加一个新节目时,我会收到{'mjp3LhFUUS8ZM7zW8UV4tHTDyD4=': {'notify': {'test': 242525}}}
,但再次运行并尝试添加一个新节目后,我会收到{'mjp3LhFUUS8ZM7zW8UV4tHTDyD4=': {'notify': {'test2': 242525}}}
。我想做的是让字典像这样保存{'mjp3LhFUUS8ZM7zW8UV4tHTDyD4=': {'notify': {'test': 242525}, {'test2': 242525}}}
我猜当你说你再次运行这个程序的时候,你的意思是你完全再次运行这个脚本,使用-
python <script.py>
。你知道吗那么问题是,对于程序的每次运行,您都将用户设置字典重新定义为-
如果用户输入命令
run
,那么您只是将用户的输入添加到此用户设置中,而不是再次从文件中读取词典。你知道吗所以这会用用户输入的内容覆盖字典。你知道吗
仅当无法从文件中读取时,才可以设置该值。你知道吗
示例-
IOError
-如果文件-save.p
不存在,它将捕获异常。pickle.UnpicklingError
-如果文件save.p
不包含正确的pickle数据,它将捕获异常。你知道吗相关问题 更多 >
编程相关推荐