Python脚本无输出无报错排查:网站API可用槽位查询脚本问题
问题排查与解决
最可能的原因:函数未被调用
你的代码仅定义了available_slots()函数,但没有在脚本末尾调用这个函数。Python脚本运行时只会执行顶级代码,定义函数不会自动执行函数体内容,所以脚本运行后无任何输出也不报错。
解决方法:在脚本最后添加一行调用代码:
available_slots()
其他排查步骤(如果调用函数后仍有问题)
1. 验证API请求是否成功
添加状态码检查,确认请求未失败:
result = requests.get(URL, headers=header) print("请求状态码:", result.status_code) # 正常请求应返回200 result.raise_for_status() # 请求失败时直接抛出异常,方便定位问题
- 若状态码不是200,说明API地址有误、权限不足或服务器异常,需核对URL和请求头信息。
2. 检查JSON结构与日期键是否匹配
你硬编码了日期键"2022-12-08",但API返回的日期格式可能变更,或该日期不存在于返回结果中。可先打印所有日期键确认:
response_json = result.json() print("API返回的日期键列表:", list(response_json.keys()))
如果目标日期不在列表内,需调整日期键,或改用动态日期(比如datetime.date.today().isoformat()获取当天日期)。
3. 修正循环中的提前终止逻辑
当前代码找到第一个可用槽位后就会return True,后续可用槽位不会被打印。若需输出所有可用槽位,将return True移至循环外:
def available_slots(): counter = 0 result = requests.get(URL, headers=header) result.raise_for_status() response_json = result.json() data = response_json["2022-12-08"] for each in data: if each["available"]: # 简化写法,等价于each["available"] == True counter += 1 print(each["name"]) if counter > 0: print(f"共找到{counter}个可用槽位") return True else: print("No Available Slots") return False
4. 确认返回的data数组非空
如果response_json["2022-12-08"]是空数组,循环不会执行,直接进入counter==0分支。可添加打印确认:
data = response_json["2022-12-08"] print("该日期下的槽位数量:", len(data))
内容的提问来源于stack exchange,提问作者Undefinded_Hex
相关产品推荐
相关产品推荐

