首页 > 解决方案 > 仅使用新信息将字典读取到文件覆盖

问题描述

我已将文本文件读入字典,使用函数在字典中添加/删除记录,然后将其写回文本文件。文本文件的格式如下:

    First Name
    2018-11-05 10:12:15
    First string
    Second string
    Third string
    
    Second Name
    2014-01-02 14:21:11
    First string
    Second string
    Third string

这是我的代码的一部分:

name = {'First Name':['2018-11-05 10:12:15','First string', 'Second String', 
    'Third String']} and so on

     def addName(names):
        print("Adding to name list")
        while True:
            answer = input("Enter name to add or <ENTER> to exit: ")
            if answer == "":
                print("Exiting Add Names")
                break
            elif answer in name:
                print("Name already exist")
            elif answer not in [name]:
                new_name_info = str(input("Enter name info: "))
                new_name_dict = {answer: [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), new_plant_info]}
                name.update(new_names_dict)
                print("Add new name info successful.")
                break
    
    def Write_back_into_file(diction):
            print("Writing it back and exiting")
            with open("filename", "w") as file:
                for key in diction.keys():
                    namess = list(name[key])
                    file.write(key + "\n" + "".join(namess) + "\n")

但是,不是将更新的字典写回文件,而是仅使用添加到字典中的新键覆盖整个文件。

我了解“w”模式的工作原理,但我打算在添加和删除记录后将更新的字典写入文件。

所以我不确定如何将更新的字典以原始格式写回文本文件。

标签: python

解决方案


除了错别字之外,类似的东西应该可以工作:

def Write_back_into_file(diction):
    print("Writing it back and exiting")
    with open("filename", "w") as file:
        for key in diction.keys():
            file.write(key + "\n" + "\n".join(diction[key]) + "\n\n")

当然,您必须将字典“名称”传递给函数:

Write_back_into_file(name)

推荐阅读