在python中附加不保存外部文件

时间:2017-10-02 01:05:09

标签: python dictionary

我正在试图弄清楚如何确保当我运行一个新的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.")

2 个答案:

答案 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.")