Python实现向文件添加设备信息前查重避免重复写入
解决设备信息重复写入的问题
原代码存在两个明显问题:一是lines列表的语法错误(元素间缺少逗号,还有转义字符误用),二是完全没有检查目标文件里是否已存在要添加的设备信息,导致重复运行就会重复写入相同内容。
修正思路
- 先读取
Device_Names文件的全部内容,提取已存在的设备名称-IP配对,存进集合(集合的查找效率远高于列表) - 整理待添加的设备条目,过滤掉已经存在的记录
- 把仅有的新增条目追加到文件末尾
修正后的代码
# 用元组整理要添加的设备信息,比直接写字符串更易维护 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
相关产品推荐
相关产品推荐

