Python循环读取序列号拼接URL末尾请求接口并追加结果到文件咨询
问题解决方案
原代码问题梳理
- 使用
f.read()一次性读取整个文件为单个字符串,没有按行拆分出独立序列号,直接拼接会将所有序列号、换行符一并写入URL,不符合接口路径规则 - 缺少遍历序列号的循环逻辑,只会发起单次请求
- 路径占位符
{}未传入对应序列号参数,格式化规则未生效 - 缺少返回结果追加写入本地文件的逻辑
修正后完整代码
import http.client # 请替换为你实际的有效请求头,包含API鉴权所需字段 headers = { 'Authorization': 'Bearer 你的实际API_TOKEN', 'Accept': 'application/json' } # 读取序列号列表,按行拆分并过滤空行 with open('serial_no_list', 'r', encoding='utf-8') as f: serial_list = [line.strip() for line in f.readlines() if line.strip()] conn = http.client.HTTPSConnection("api.activeiq.netapp.com") # 遍历所有序列号发起请求,结果追加写入文件 with open('cluster_summary_result.json', 'a', encoding='utf-8') as res_file: for serial in serial_list: # 拼接接口路径 api_path = f"/v1/clusterview/get-cluster-summary/{serial}" conn.request("GET", api_path, headers=headers) res = conn.getresponse() data = res.read().decode("utf-8") # 写入结果,可根据需要添加换行分隔不同序列号的返回内容 res_file.write(data + '\n') print(f"序列号{serial}请求完成,状态码:{res.status}") conn.close()
注意事项
- 代码中
headers变量需要替换为你实际的请求头,否则会出现接口鉴权失败的问题 - 如果你的序列号文件存在空行,列表生成时会自动过滤,避免无效请求
- 所有返回结果会按请求顺序追加到
cluster_summary_result.json文件中,你可以根据需要修改输出文件名
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

