pickle存后读取失败
ret1=a.buttonbox(msg='1 储存 2查询',title='',choices=('储存','查询','删除','关闭'),image='')if ret1=='储存':
msg='填写下列信息'
title=''
fields=['用户名','姓名','固定电话','手机号码','QQ','E-mail']
ret=a.multenterbox(msg,title,fields,values='')
l={}
t=''
for i in range(1,6):
t+=str(fields)+str(ret)+' '
l]=t
with open('储存111.txt','ab') as wb: #打开一个文件进行存储
pickle.dump(l,wb)
elif ret1=='查询':
ret3=a.enterbox('请输入查询的用户名:')
if ret3=='':
a.msgbox('请输入用户名进行查询!')
else:
lenth=len(ret3)
with open('储存111.txt','rb') as wb:
l1=pickle.load(wb) #读取
for i in l1:
if ret3==i:
a.msgbox(i)
可以储存,但是什么都查询不到。 你存储的不对,
读取后if判断的条件也不对
为什么不在存储进去之前用print看一下存进去的是什么内容呢?
在读出来之后,判断之前也看一下是什么内容
那样你肯定能看出来你的错误在什么地方
我不清楚你到底打算存储什么内容
按照我理解的帮你修改了一下,你看看是不是你想要的
import easygui as a
import pickle
ret1=a.buttonbox(msg='1 储存 2查询',title='',choices=('储存','查询','删除','关闭'),image='')
if ret1=='储存':
msg='填写下列信息'
title=''
fields=['用户名','姓名','固定电话','手机号码','QQ','E-mail']
ret=a.multenterbox(msg,title,fields,values='')
l={}
t=''
for i in range(6):
t+=str(fields)+str(ret)+' '
l]=t
print(l)
with open('储存111.txt','ab') as wb: #打开一个文件进行存储
pickle.dump(l,wb)
elif ret1=='查询':
ret3=a.enterbox('请输入查询的用户名:')
if ret3=='':
a.msgbox('请输入用户名进行查询!')
else:
lenth=len(ret3)
with open('储存111.txt','rb') as wb:
l1=pickle.load(wb) #读取
for i in l1:
print(i,l1)
if ret3==i:
a.msgbox(l1) sunrise085 发表于 2020-4-4 02:04
你存储的不对,
读取后if判断的条件也不对
为什么不在存储进去之前用print看一下存进去的是什么内容呢?
...
我希望储存进文本的是一个字典,然后查询时用Key查询到字典里的值,然后通过easygui弹出值的信息。你帮着修改后,能在黑框里弹出,但是easygui中无法弹出,我就想知道怎么让值在easygui中弹出 765838210 发表于 2020-4-4 11:42
我希望储存进文本的是一个字典,然后查询时用Key查询到字典里的值,然后通过easygui弹出值的信息。你帮着 ...
你说的是第29行的a.msgbox无法输出吗?
我这里可以弹出这个msgbox啊。
你看一下你输入的ret3和文件中读出来的l1的key值一样吗?
我给你在程序中添加的print是让你看看读出来的值。
不影响程序的运行,若没有弹出msgbox,很可能是因为你写进去的内容和你查询时输入的值不一样。
注意,每次重新输入保存的时候需要把原来的txt文件删除,否则无法再次写入
我现在放假不在,无法帮你看运行程序结果 sunrise085 发表于 2020-4-4 12:49
你说的是第29行的a.msgbox无法输出吗?
我这里可以弹出这个msgbox啊。
你看一下你输入的ret3和文件中读 ...
嗯嗯,我是希望能存进多个数据,然后读取其中一个,应该怎么办呢 765838210 发表于 2020-4-4 14:21
嗯嗯,我是希望能存进多个数据,然后读取其中一个,应该怎么办呢
写文件的时候,以ab+模式打开,
把整个程序放到循环里。 sunrise085 发表于 2020-4-4 14:59
写文件的时候,以ab+模式打开,
把整个程序放到循环里。
print的时候能显示字典里添加成功了,但是查询的时候显示keyerror :print(l1)
KeyError: '你' sunrise085 发表于 2020-4-4 14:59
写文件的时候,以ab+模式打开,
把整个程序放到循环里。
只能查询到第一个的值 765838210 发表于 2020-4-4 15:55
print的时候能显示字典里添加成功了,但是查询的时候显示keyerror :print(l1)
KeyError: '你'
这个"你"是什么?是你查询的时候输入的ret3?
上面写文件的时候key是你输入的用户名,你输入的用户名有"你"吗?
765838210 发表于 2020-4-4 15:57
只能查询到第一个的值
我现在没电脑,不能帮你看程序。
你就多多尝试吧,哪里与预期的不一样,你就用print将之打印出来看看和你预期的有什么差异 sunrise085 发表于 2020-4-4 16:55
这个"你"是什么?是你查询的时候输入的ret3?
上面写文件的时候key是你输入的用户名,你输入的用户名有" ...
你是第二个键,只能查询第一个键
页:
[1]