You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字典增删后写入文本文件仅保留新键?求原格式完整写入方法

问题分析与修正方案

我来帮你梳理下代码里的几个关键问题,正是这些小疏漏导致写入文件时只保留了新添加的条目,而不是完整的更新后字典:

1. 函数作用域与变量误用

  • addName函数的参数是names,但你在函数里一直用全局变量name,这会导致函数无法正确操作传入的字典;
  • Write_back_into_file的参数是diction,但函数内部却用了全局的name,完全没用到传入的更新后字典,这直接导致写入的不是你修改后的内容;
  • 变量拼写错误:new_plant_info应该是new_name_info,new_names_dict应该是new_name_dict,这些拼写错误会导致代码运行报错或逻辑异常;
  • 判断逻辑错误:elif answer not in [name]完全不对,应该是判断answer not in names(检查名字是否已存在于字典的键中)。

2. 文件写入格式错误

原文件的格式是一行一条记录,格式为Name 时间 字符串1 字符串2 字符串3,但你的写入代码把名字和信息分成了两行,而且信息之间没有空格,既不符合原格式,也会导致内容混乱。

修正后的完整代码

import datetime

# 初始字典(示例)
name = {
    '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']
} 

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
        if answer in names:
            print("Name already exists")
            continue
        # 获取用户输入的信息,按空格拆分(对应原格式的多个字符串)
        new_name_info = input("Enter name info (separated by spaces): ").split()
        # 生成当前时间字符串
        current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        # 构造新条目:时间 + 用户输入的多个字符串
        names[answer] = [current_time] + new_name_info
        print("Add new name info successful.")

def Write_back_into_file(diction):
    print("Writing it back and exiting")
    with open("filename", "w") as file:
        # 遍历字典的每个键值对,按原格式写入
        for key, values in diction.items():
            # 把名字、时间、各个字符串用空格连接成一行
            line = f"{key} {' '.join(values)}\n"
            file.write(line)

# 示例调用
addName(name)
Write_back_into_file(name)

关键修复点说明

  • 统一使用函数参数操作字典,避免全局变量的误用,确保修改的是正确的字典实例;
  • 修正了变量拼写和判断逻辑,保证添加条目的逻辑正常运行;
  • 按照原文件格式拼接每行内容:名字 + 空格 + 时间 + 空格 + 各个字符串,确保写入的文件和原格式完全一致;
  • 调整了addName的循环逻辑,用户可以连续添加多个条目,直到按回车退出。

内容的提问来源于stack exchange,提问作者J01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:22:44