You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:06:01