如何用Python正则方法拆分交换机配置文件为自定义命名的多份文本文件
Cisco配置文件拆分代码修改方案
现存代码问题
- 使用非捕获组的正则拆分,无法提取匹配到的show命令作为文件名
- 拆分后第一个元素为首个show命令之前的无效内容,会生成空文件
- 外层冗余的
for command in output逻辑无意义,会导致拆分逻辑重复执行
修复后代码
import re # 此处filename为你遍历目录获取的单个配置文件名 if filename.endswith(".txt"): with open(filename, 'r', encoding='utf-8') as file: content = file.read() # 带捕获组的正则拆分,返回结果会包含匹配到的show命令 split_res = re.split(r'(show\s+(?:running-config|version|inventory))', content, flags=re.IGNORECASE) # 跳过首个无效空内容,步长为2遍历:奇数位置为命令,偶数位置为对应返回结果 for idx in range(1, len(split_res), 2): raw_cmd = split_res[idx].strip() output_content = split_res[idx+1] # 替换命令中的空格避免文件名兼容性问题,不需要可直接删除该行用raw_cmd safe_cmd = raw_cmd.replace(" ", "_") file_prefix = filename.rsplit(".", 1)[0] new_filename = f"{file_prefix}$$$safe_cmd$$$.txt" with open(new_filename, 'w', encoding='utf-8') as f: f.write(output_content)
可选调整项
- 若不需要过滤内容首尾空行,删除
strip()方法即可 - 若允许文件名存在空格,直接用
raw_cmd替换代码中的safe_cmd - 可根据你的文件实际编码调整
encoding参数值
内容的提问来源于stack exchange,提问作者atahu
相关产品推荐
相关产品推荐

