用字典做一个单词记录本,出现了逻辑错误(大概),求大神不吝赐教呀
本帖最后由 杀手达文西 于 2020-9-28 21:13 编辑#words-first
import time as t
import pickle as pkl
time = t.strftime('%Y-%m-%d')
ok = 1
while ok == 1:
new_word = input('请输入你要记录的单词(直接回车退出单词本)\n')
f = open(r'E:/pytest/words_first.pkl','ab+')
f.seek(0)
wb = pkl.load(f)
#输入已保存单词/词组
if new_word in wb:
print('单词已存在')
#输入回车键,跳出循环
elif new_word == '':
break
#输入新单词
else:
wb=(time)
print(wb)
print('已记录 %d 个单词/词组'%(len(wb)))
pkl.dump(wb,f)
f.close()
input('按任意键退出程序')
=======================================================================
这就是代码
然后是运行结果
======================= RESTART: E:/pytest/words_first.py ======================
请输入你要记录的单词(直接回车退出单词本)
hello
单词已存在
{'hello': '2020-09-28'}
已记录 1 个单词/词组
请输入你要记录的单词(直接回车退出单词本)
love
{'hello': '2020-09-28', 'love': '2020-09-28'}
已记录 2 个单词/词组
请输入你要记录的单词(直接回车退出单词本)
ooo
{'hello': '2020-09-28', 'ooo': '2020-09-28'}
已记录 2 个单词/词组
请输入你要记录的单词(直接回车退出单词本)
按任意键退出程序
===========================================================
新输入的单词被覆盖了,这是为啥呢?
(在这主程序之前我也写过一段代码记录单词本的第一个单词,后面的主程序就直接用的这个文件。之前那个程序和结果在下面)
import time as t
import pickle as pkl
with open(r'E:/pytest/words_first.pkl','wb') as f:
time = t.strftime('%Y-%m-%d')
dict1 = {'hello':(time)}
pkl.dump(dict1,f)
with open(r'E:/pytest/words_first.pkl','rb') as f:
n = pkl.load(f)
for k,v in n.items():
print('%s %s'%(k,v))
==============================================================
运行结果:
hello 2020-09-28
最后求求大神帮帮忙啦!{:10_254:}{:10_254:}{:10_254:} 运行后,words_first.pkl里面是空的,直接就报错了。。。。。。。
这个里面的内容是怎么存储的? 本帖最后由 kylin121380 于 2020-9-28 22:13 编辑
import time as t
import pickle as pkl
import os
time = t.strftime('%Y-%m-%d')
ok = 1
while ok:
new_word = input('请输入你要记录的单词(直接回车退出单词本)\n')
try:
if 'words_first.txt' not in os.listdir('.'):
with open(r'words_first.txt', 'wb') as f:
pass
with open(r'words_first.txt', 'rb') as f:
f.seek(0)
wb = pkl.load(f)
print(wb)
# 输入已保存单词/词组
if new_word in wb:
print('单词已存在')
# 输入回车键,跳出循环
elif new_word == 'q':
break
# 输入新单词
else:
wb = (time)
with open(r'words_first.txt', 'wb') as f:
pkl.dump(wb, f)
except EOFError:
with open(r'words_first.txt', 'wb') as f:
dict1 = {new_word: (time)}
pkl.dump(dict1, f)
页:
[1]