无法在 IDLE 中用 pickle 或 shelve 模块保存变量和打开变量的问题咨询。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

无法在 IDLE 中用 pickle 或 shelve 模块保存变量和打开变量的问题咨询。

问问小秘 2020-01-02 11:55:23 201

无法在 IDLE 中用 pickle 或 shelve 模块保存变量和打开变量的问题咨询。

我编写了一个简单的密码管理器,可以进行密码的添加、查询和修改,其中有一个列表是用来储存用户输入的网站用户密码信息的。我的问题是:我想保存那个保存了用户网站信息的变量,以方便下次用户打开这个 py 文件执行程序的时候这些用户输入的数据仍在,用户可以进行后续操作而不是重新输入所有内容,因为重新输入的话这个密码管理器就没有意义。
我在网页上搜索了很多文档,但是得到的信息都是像这样的:
import pickle
myList=['a',123111,[4,5,True]]
f=open ('mylist.pickle','wb') # b: 一定要以二进制的方式打开
pickle.dump(myList,f)
f.close()

问题 1:
比如这里的列表 myList,列表里面已经有需要保存的值。而我的程序里的列表创建时是一个空列表,它的值是等待用户输入的。当然,在程序执行以后,用户可能确实会输入一些内容。
问题 2:
网上看到的代码都是如同上述代码这样很简单,但是我不明白的是变量的保存是单独创建一个 py 文件写上面这种代码还是在我现在的程序里面加上这些代码?如果是在现有程序里面写保存变量的代码?它应该如何写呢?
问题 3:
当我下次要继续使用这些代码的时候,我是在 IDLE 里打开这个 py 文件按 F5,里面的变量就是已经保存好可以用(上次的值已经存在),还是要进行其他操作上次的值才能调出来呢?
以下是我的代码:
`''' 这是一个密码管理器 '''
''' 每次程序结束,程序中的变量会全部被销毁 '''
list1=[] #创建一个空列表
choice=None
while choice!='0':
list2=[]# 创建一个空列表,用以储存用户输入的网站密码等内容
print (""" 请选择你要进行的操作,并输入对应数字.
0 - exit
1 - 添加网站的用户名和密码
2 - 查询密码
3 - 修改密码
""")
choice=input ("请输入对应数字选择您要进行的操作:") #等待用户输入
if choice=='0':
print("Good-bye.")
elif choice=='1':
Website_name=input ("请输入网站简称:")
for i in list1:
if(Website_name == i[0]):
print ("该网站用户名已经存在.", i, "\n")
continue
list2.append(Website_name)
Website=input ("请输入网址:")
list2.append(Website)
User_name=input ("请输入用户名:")
list2.append(User_name)
password=input ("请输入密码:")
list2.append(password)
list1.append (list2) #将 list2 的内容储存到 list1 print(list2)
elif choice=='2':
search=input ("请输入您要查询的内容 (输入网站简称查找):") #只能根据网站简称查找内容
flag = True
for i in list1:
if (search in i [0]): #既可全称又可关键字
print ("您查找的结果是:", "网站简称:" + i [0] + "网址:" + i [1] + "用户名:" + i [2] + "密码:" + i [3]) flag = False
if(flag):
print ("对不起,您查找的内容不存在.")
elif choice=='3':
print(list1)
change_search=input ("请输入您要修改密码的网站简称:")
for i in list1:
if (change_search == i[0]):

-1 表示 取最后一个元素#

print("原密码是:", i[-1])
           i[-1] = input("请输入新密码:")
           print("新密码是:", i[-1])
else:
   print("对不起,您输入的选项无效,请重新输入.")

` 期待您的解答,谢谢。

数据安全/隐私保护 Python
分享到
取消 提交回答
全部回答(1)
Python中文社区
使用钉钉扫一扫加入圈子
+ 订阅

推荐文章
相似问题
官网链接