我正在试图弄清楚如何确保当我运行一个新的dict条目时它实际上会保存。在最后一个异常之前,当你“print(dictio.fullDict3 [firstLetter])”时,它会显示新添加的dict条目,但实际上并没有保存在名为dictio的外部文件中。
以下是主要内容:
git fetch
以下是名为dictio.py的外部文件,其中包含字典:
import fileinput
import dictio
from dictio import fullDict3
while True:
try:
srcTxt = input("Input word you want to look up: ")
firstLetter = srcTxt[0]
print(dictio.fullDict3[firstLetter][srcTxt])
except:
try:
queryInput = input('What does '+srcTxt+' mean?: ')
with open("C:\\Users...\\dictio.py", "a"):
dictio.fullDict3[firstLetter].update({srcTxt:queryInput})
print(dictio.fullDict3[firstLetter])
except:
print("error has occured.")
答案 0 :(得分:0)
您无法通过导入操作模块的内容来更改模块的内容。没有理由导入fullDict3
。而是将您的起始结构存储在fullDict3.json
中。通过json.load
将该文件转换为Python对象 - 返回可以更改的字典。如果已准备好更新的dict写入磁盘,请通过json.dump
保存。
答案 1 :(得分:0)
好的。 Haven没有足够的时间编写代码,但最终修复了我的问题,经过一些阅读和试用后出现错误,对于任何遇到这个问题的人来说,答案是肯定的,但是,很容易有一种更清洁,更有效的方法来完成它:
while True:
try:
srcTxt = input("Input word you want to look up: ")
firstLetter = srcTxt[0]
if srcTxt == "ESC":
break
print(dictio.fullDict3[firstLetter][srcTxt])
except:
try:
queryInput = input('What does '+srcTxt+' mean?: ')
with open('C:\\Users...\\dictio.py', 'r') as f:
fullDict3[firstLetter].update({srcTxt:queryInput})
newDict = "fullDict3 = "+json.dumps(fullDict3)
with open('C:\\Users...\\dictio.py', 'w') as f:
f.write(newDict)
f.close()
except:
print("error has occured.")