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

Python实现遍历多文件匹配唯一字符串并追加对应专属文本

问题排查与代码修正

原代码核心问题:

  • 误用Python内置函数名input作为变量名,会触发命名冲突
  • 嵌套循环逻辑错误:for word in line会把每行拆成单个字符遍历,完全偏离了检查文件是否包含目标唯一字符串的需求
  • 未先判断当前文件是否包含目标唯一字符串,直接对每行做处理,逻辑顺序颠倒
  • 找到目标行时直接拼接整个input列表,而非对应索引的专属文本
  • 写入环节重复循环导致同一行被多次写入

修正后的代码:

# 唯一字符串与对应专属文本,保持顺序一一对应
target_strings = ["444", "445"]
exclusive_texts = ["text-444", "text-445"]

from pathlib import Path

files_dir = "C:/Users/Administrator/Desktop/pythone-env/"

# 遍历指定目录下所有.ini文件
for ini_file in Path(files_dir).rglob('*.ini'):
    # 读取文件全部内容
    with ini_file.open('r', encoding='utf-8') as f:
        content = f.read()
        file_lines = content.splitlines()
    
    # 标记当前文件匹配到的专属文本
    matched_text = None
    # 检查文件是否包含目标唯一字符串,找到对应专属文本
    for idx, target in enumerate(target_strings):
        if target in content:
            matched_text = exclusive_texts[idx]
            break  # 每个文件仅含一个唯一字符串,找到即停止
    
    # 仅当匹配到专属文本时,才修改文件
    if matched_text:
        with ini_file.open('w', encoding='utf-8') as f:
            for line in file_lines:
                stripped_line = line.rstrip('\n')
                # 匹配目标行,追加专属文本
                if stripped_line == "subnetIP=255.255.255.0":
                    stripped_line += matched_text
                f.write(stripped_line + '\n')

关键改进说明:

  • 重命名变量规避内置函数冲突:input改为exclusive_texts,string改为target_strings,filesDir调整为符合PEP8规范的files_dir
  • 先读取文件全部内容,一次性检查是否包含目标唯一字符串,确定要追加的专属文本,避免重复遍历
  • 使用enumerate获取目标字符串的索引,精准匹配对应顺序的专属文本
  • 仅当文件匹配到唯一字符串时才执行修改写入操作,提升效率
  • 统一编码格式为utf-8,避免不同系统下的编码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:28