Python for循环打印格式异常 网络工程师新手求教代码修正方法
问题修正方案
1. 地址簿命令输出换行异常
原因
从文本文件逐行读取的IP字符串末尾默认携带换行符\n,直接拼接打印时会导致内容被强制拆分到多行。同时直接调用open()打开文件未做关闭处理,存在资源泄漏风险。
修正代码
# 使用with上下文管理器自动管理文件资源,无需手动关闭文件 with open('/home/daryll/scripts/ip_list', 'r', encoding='utf-8') as f: ip_lines = f.readlines() for ip in ip_lines: # 去除字符串首尾的空白字符(包含换行符、空格、制表符) ip = ip.strip() # 跳过文件中的空行 if not ip: continue # 用f-string格式化输出,格式可控可读性更高 print(f"set security address-book global address {ip} {ip}/32")
2. 多接口配置命令输出格式错误
原因
你定义commands元组时,多个字符串之间没有添加逗号分隔,Python会自动将相邻的无逗号字符串拼接为单个长字符串;同时没有对每条命令单独做变量替换和打印,导致所有内容输出到同一行。
修正代码
with open('/home/daryll/scripts/ip_list', 'r', encoding='utf-8') as f: ip_lines = f.readlines() # 先定义命令模板,用{}作为IP占位符 command_templates = [ "set interfaces {} family ethernet-switching port-mode trunk", "set interfaces {} family ethernet-switching vlan members vlan1", "set interfaces {} family ethernet-switching native-vlan-id vlan2" ] for ip in ip_lines: ip = ip.strip() if not ip: continue # 遍历每个模板,替换IP后逐行打印 for template in command_templates: print(template.format(ip))
如果需要同时生成地址簿和接口配置,只需将两类输出逻辑合并到同一个IP遍历循环中即可。
内容的提问来源于stack exchange,提问作者Daryll
相关产品推荐
相关产品推荐

