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

Python实现向文件添加设备信息前查重避免重复写入

解决设备信息重复写入的问题

原代码存在两个明显问题:一是lines列表的语法错误(元素间缺少逗号,还有转义字符误用),二是完全没有检查目标文件里是否已存在要添加的设备信息,导致重复运行就会重复写入相同内容。

修正思路

  1. 先读取Device_Names文件的全部内容,提取已存在的设备名称-IP配对,存进集合(集合的查找效率远高于列表)
  2. 整理待添加的设备条目,过滤掉已经存在的记录
  3. 把仅有的新增条目追加到文件末尾

修正后的代码

# 用元组整理要添加的设备信息,比直接写字符串更易维护
devices_to_add = [
    ("device.1", "10.10.10.10"),
    ("device.2", "11.11.11.11"),
    ("device.3", "12.12.12.12")
]

# 匹配原文件的格式:设备名左对齐占40位,中间是A,IP右对齐占20位,每条后加两个换行
line_format = "{:<40}A{:>20}\n\n"

existing_devices = set()

# 读取已有文件,提取已存在的设备-IP对
try:
    with open("Device_Names", "r") as f:
        for line in f:
            line = line.strip()
            if not line:
                continue
            # 按空格分割行内容,取第一个字段(设备名)和最后一个字段(IP)
            parts = line.split()
            if len(parts) >= 3:
                dev_name = parts[0]
                dev_ip = parts[-1]
                existing_devices.add((dev_name, dev_ip))
except FileNotFoundError:
    # 如果文件还不存在,直接跳过读取步骤
    pass

# 写入仅有的新增设备信息
with open("Device_Names", "a") as f:
    for dev_name, dev_ip in devices_to_add:
        if (dev_name, dev_ip) not in existing_devices:
            f.write(line_format.format(dev_name, dev_ip))

关键说明

  • 用元组存储设备信息,避免手动处理换行、空格的繁琐,后续修改格式或添加新设备更方便
  • 集合存储已存在的记录,判断是否重复的操作更快
  • 兼容文件不存在的场景,第一次运行会自动创建文件
  • 严格保留原有的排版格式,不破坏现有文件的可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:20:38