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

基于字典键创建多文本文件时遇仅最后键写入所有文件的问题

问题分析

你的代码核心问题是循环嵌套逻辑错误,导致每个文件被重复覆盖写入:

  • 外层while循环会执行9次(count从1到9),每次循环里又遍历整个字典的所有键
  • 每次打开文件用的是'w'(写入模式),这个模式会清空文件原有内容再写入,所以每个文件最后只会保留字典最后一个键的内容
  • 同时while循环的条件count <= len(signals_dict)会多生成一个signal9.txt(因为字典长度是8,count会到9)
修正方案

直接遍历字典的键,为每个键生成对应的文件即可,不需要额外的count循环:

signals_dict = {'Signal 1': 1, 
                'Signal 2': 1, 
                'Signal 3': 1, 
                'Signal 4': 1, 
                'Signal 5': 1, 
                'Signal 6': 1, 
                'Signal 7': 1, 
                'Signal 8': 1}

def to_string():
    # 遍历字典的每个键,用枚举生成从1开始的序号
    for idx, key in enumerate(signals_dict.keys(), start=1):
        with open(f'signal{idx}.txt', 'w') as wf:
            wf.write(key)

to_string()

如果要严格对应键名里的数字(比如"Signal 1"对应signal1.txt),也可以从键中提取数字:

def to_string():
    for key in signals_dict.keys():
        # 从键名中拆分出数字部分
        num = key.split()[-1]
        with open(f'signal{num}.txt', 'w') as wf:
            wf.write(key)

这样每个文件会写入对应的键,不会被覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07