如何用Python遍历子目录文件并添加指定内容到目标行
解决方案
需求梳理
- 遍历指定目录下所有名称符合要求的文件(示例中为
.ini格式文件) - 筛选出包含指定文本的文件
- 在匹配到指定文本的行后追加特定内容
修正后的代码
from pathlib import Path files_dir = "D:/OneDrive/Desktop/testpy/" target_text = "sometext" add_text = "mytext" # 递归遍历目录下所有.ini文件 for file in Path(files_dir).rglob('*.ini'): # 读取文件所有行内容 with file.open('r', encoding='utf-8') as in_file: lines = in_file.readlines() # 跳过不包含目标文本的文件 if not any(target_text in line for line in lines): continue # 修改内容并写回文件 with file.open('w', encoding='utf-8') as out_file: for line in lines: # 匹配包含目标文本的行(如需精确匹配整行,可改为line.strip() == target_text) if target_text in line: # 处理换行符,避免出现多余空行 line = line.rstrip('\n') + add_text + '\n' out_file.write(line)
关键修正说明
- 文件打开模式:原代码未指定读写模式,需明确
'r'(读)和'w'(写),同时指定编码避免乱码问题 - 匹配逻辑优化:原代码用
line == "sometext"会因换行符存在导致匹配失败,改用target_text in line实现包含匹配,适配实际文本行格式 - 无意义操作过滤:先检查文件是否包含目标文本,避免对无需修改的文件执行写入操作
- 换行符处理:通过
rstrip('\n')移除原行换行符,添加内容后补回,保证文件格式一致性
内容的提问来源于stack exchange,提问作者Florin Alexandru
相关产品推荐
相关产品推荐

