如何将新项目保存在用户添加的 dat 文件中?
How could new items be saved in a dat file which are added by the user?
有一本字典包含 2 种语言的 3 对水果。其中之一的英文(pomme - aple)不正确,可由用户修复。此外,用户可以用 2 种语言向词典中添加新词。如果不想添加新水果或修复错误的水果,用户可以退出词典。
新词或固定词应保存在 dat 文件中,但该文件仍为空 :(
这是一个作业,我必须用搁置来解决这个问题,但我不知道如何。
这是我的尝试:
import shelve
store = shelve.open("fruits.dat")
try:
mydict = store["allfruits"]
except:
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
while True:
answer=input("Write a fruits name ")
if answer == "pomme":
print(mydict["pomme"])
answer1=input("Would you like to change it? ")
if answer1 == "yes":
newworld=input("What's that? ")
mydict2 = {"pomme" : newworld}
mydict.update(mydict2)
anotherfruit=input("Thx. Are you interested in another fruits name? ")
if anotherfruit=="yes":
continue
else:
print("Bye")
break
else:
print("Bye")
break
elif answer not in mydict:
adding=input("It's not in there. Would you like to add? ")
if adding == "yes":
newworld1=input("How is it in English? ")
mydict3 = {answer : newworld1}
mydict.update(mydict3)
anotherfruit=input("Thx. Are you interested in another fruits name? ")
if anotherfruit=="yes":
continue
else:
print(mydict)
break
else:
print("Bye")
break
store["allfruits"] = mydict
store.sync()
store.close()
这里 -->
try:
mydict = store["allfruits"]
except:
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
while True:
...
您尝试使用 mydict = store['allfruits']
从数据库中读取 mydict
。如果失败(在 except:
语句中),则分配 mydict
一个默认值。那部分没问题。
但是在您分配 mydict = { ... }
之后立即再次覆盖您刚刚从数据库中读取的内容。
有一本字典包含 2 种语言的 3 对水果。其中之一的英文(pomme - aple)不正确,可由用户修复。此外,用户可以用 2 种语言向词典中添加新词。如果不想添加新水果或修复错误的水果,用户可以退出词典。 新词或固定词应保存在 dat 文件中,但该文件仍为空 :( 这是一个作业,我必须用搁置来解决这个问题,但我不知道如何。 这是我的尝试:
import shelve
store = shelve.open("fruits.dat")
try:
mydict = store["allfruits"]
except:
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
while True:
answer=input("Write a fruits name ")
if answer == "pomme":
print(mydict["pomme"])
answer1=input("Would you like to change it? ")
if answer1 == "yes":
newworld=input("What's that? ")
mydict2 = {"pomme" : newworld}
mydict.update(mydict2)
anotherfruit=input("Thx. Are you interested in another fruits name? ")
if anotherfruit=="yes":
continue
else:
print("Bye")
break
else:
print("Bye")
break
elif answer not in mydict:
adding=input("It's not in there. Would you like to add? ")
if adding == "yes":
newworld1=input("How is it in English? ")
mydict3 = {answer : newworld1}
mydict.update(mydict3)
anotherfruit=input("Thx. Are you interested in another fruits name? ")
if anotherfruit=="yes":
continue
else:
print(mydict)
break
else:
print("Bye")
break
store["allfruits"] = mydict
store.sync()
store.close()
这里 -->
try:
mydict = store["allfruits"]
except:
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
mydict = {"pomme" : "aple", "poire" : "pear", "cerise" : "cherry"}
while True:
...
您尝试使用 mydict = store['allfruits']
从数据库中读取 mydict
。如果失败(在 except:
语句中),则分配 mydict
一个默认值。那部分没问题。
但是在您分配 mydict = { ... }
之后立即再次覆盖您刚刚从数据库中读取的内容。