Python发送request请求获取传感器数据后执行减法运算报错如何解决
报错根源
response.text返回的是字符串类型,Python没有定义字符串之间的减法规则,直接执行str - str会触发类型错误。
解决方案
情况1:接口返回的是纯数字格式的时间(如Unix时间戳、秒数)
直接将两个返回值转成数值类型(int/float)后再做减法即可,修改后代码如下:
import requests # 第一个请求:获取当前时间 url = "IPADDRESS" payload={} headers = { "Authorization":"Password" } # 可选:关闭verify=False触发的SSL警告 requests.packages.urllib3.disable_warnings() response1 = requests.request("GET", url, headers=headers, data=payload, verify=False) print('Current Time: ', response1.text) # 字符串转数值类型 updatedtime = float(response1.text) # 第二个请求:获取距上次运动的时长 url = "IPAddress" payload={} headers = { "Authorization": "Password" } response = requests.request("GET", url, headers=headers, data=payload, verify=False) print('Time since last motion: ', response.text) # 字符串转数值类型 occupancelevel = float(response.text) result = updatedtime - occupancelevel print(result)
情况2:接口返回的是格式化时间字符串(如2024-05-20 12:00:00)
需要先用datetime模块将字符串解析为datetime对象后再做运算:
from datetime import datetime import requests # 省略前面请求代码,拿到response1和response对象后执行以下逻辑 # 按实际返回的时间格式修改匹配规则 time_format = "%Y-%m-%d %H:%M:%S" updatedtime = datetime.strptime(response1.text.strip(), time_format) occupancelevel = datetime.strptime(response.text.strip(), time_format) # 运算结果为timedelta对象,可通过.total_seconds()拿到相差秒数 result = updatedtime - occupancelevel print(result.total_seconds())
内容的提问来源于stack exchange,提问作者HWJ5
相关产品推荐
相关产品推荐

