如何用Python将批量网络ID插入URL并调用Meraki API?
问题解决与优化代码
修正后的可运行代码
import requests # 替换为你的真实Meraki API密钥 API_KEY = '你的实际API密钥' with open('Test.txt', 'r') as file1: # 逐行读取文件,自动处理换行符 for line in file1: network_id = line.strip() # 跳过空行,避免无效请求 if not network_id: continue print(f"正在查询网络ID: {network_id}") # 构造请求URL url = f'https://dashboard.meraki.com/api/v0/networks/{network_id}' headers = { 'X-Cisco-Meraki-API-Key': API_KEY, 'Content-Type': "application/json" } try: # 发送GET请求 response = requests.get(url, headers=headers, timeout=10) # 检查请求是否成功,失败则抛出异常 response.raise_for_status() # 解析返回的JSON数据 network_info = response.json() # 提取并打印网络名称 print(f"结果: 网络ID {network_id} 对应名称为 {network_info.get('name', '未获取到名称')}\n") except requests.exceptions.RequestException as e: # 捕获请求异常并打印错误信息 print(f"查询失败: 网络ID {network_id} 出错 - {str(e)}\n")
原代码问题分析与优化说明
- 无效行处理:原代码未处理文本中的空行或带空格的行,这类行生成的URL会触发API错误,容易让你误以为只有最后一行有结果。修正后会自动跳过空行,并用
strip()清理ID前后的空格/换行符。 - 无异常捕获:原代码没有异常处理,一旦某条请求超时、权限错误或ID无效,程序会直接中断,后续ID无法查询。修正后添加了异常捕获,程序会继续处理剩余ID,并打印错误原因。
- 输出可读性:原代码直接打印整个API返回的JSON文本,信息冗余。修正后提取出
name字段,直接输出你需要的网络名称,更直观。 - 冗余依赖:原代码导入了
meraki、json、os但未实际使用,已删除以简化代码。
内容的提问来源于stack exchange,提问作者Josh S
相关产品推荐
相关产品推荐

