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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:36:03