通过接口查询几条数据返回“code”值为200的查询成功,返回其它值的查询失败,然后在代码里做了if语句判断是否返回“200”,但是调试的时候发现有一部分数据查询返回了code值是200,但是在判断语句中会被判断为查询失败,请高手指导一下该如何处理?
操作系统WIN10 专业版,使用的是python3.12.2版本,写代码的工具是PyCharm 2023.3.4 (Professional Edition)
代码(片段)如下:
response = requests.request("POST", api_url, data=payload, headers=headers)
query_results = []
query_results.append(response.json())
response_data = response.json()
print(response_data)
code_data = (response_data.get("code", ""))
msg_data = str(response_data.get("msg", ""))
a1 = response_data.get("data", 0)
print(code_data, msg_data, a1)
try:
if code_data == 200 or msg_data == "success":
# 解析响应数据,获取快递公司、单号、状态描述、查询结果
nu_data = response_data.get("data", {}).get("nu", "")
com_data = response_data.get("data", {}).get("com", "")
company_name = couriers_data[couriers_data['nickname'] == com_data]['name'].iloc[0]
status_desc_data = response_data.get("data", {}).get("status_desc", "")
content_value = [item['content'] for item in response_data['data']['info'] if "揽收" in item['content']]
result_text.insert("end", f"{nu_data},{company_name},{status_desc_data},{content_value}\n")
# 在将结果插入result_text后更新express_data列表
update_express_data()
else:
# 处理 API 调用失败情况
result_text.insert("end", f"错误提示: {number} ,{code_data},{response_data.get('msg', '未知错误')}\n")
# 在将结果插入result_text后更新express_data列表
update_express_data()
index += 1
# 递归调用,查询下一个单号
root.after(1000, query_one_tracking_number, tracking_numbers, index)
# 延迟1秒后再次调用,以防止请求过于频繁导致 IP 被禁止访问
except Exception as e:
# 处理异常情况
result_text.insert("end", f"错误提示: {number} ,{response.status_code},{"该单号无法查询,请检查单号是否正确,或不支持该快递公司"}\n")
# 在将结果插入result_text后更新express_data列表
update_express_data()
index += 1
root.after(1000, query_one_tracking_number, tracking_numbers, index)
其中code_data = (response_data.get(“code”, “”))
语句曾经强制将获取的值改为str或int类型
code_data = str(response_data.get(“code”, “”))
code_data = int(response_data.get(“code”, “”))
if code_data == 200 or msg_data == “success”:语句曾经改为
if “200” in code_data:
if a1 is not None:
反复调试过很多次,以下是调试结果的截图
ems和急兔返回的code值和msg的值和其它都是一样的,但是判断的时候就一直就判断为异常,有高手能帮忙分析一下这个问题是什么原因造成的吗?非常感谢!
问题应该是出现异常, 先移除
try...except
, 确认是哪一行出了什么错 ?有可能是这两行, 查询错误所造成的.
建议再加条件来筛选问题, 而不是使用
try...except
来避过问题.