我遇到的问题是我在python代码中无法理解。
timestamps = list(map(lambda ts: ts.time, timestamps))
start_timestamps = timestamps
end_timestamps = timestamps[1:]
d = date(2000, 1, 1)
FMT = '%H:%M:%S'
for i, t1 in enumerate(start_timestamps):
t1 = datetime.combine(d, start_timestamps[i])
t2 = datetime.combine(d, end_timestamps[i])
dt = t1 - t2
#dt = datetime.strptime(t1,FMT) - datetime.strptime(t2,FMT)
通过在我的django项目中使用它,我收到以下错误:
t2 = datetime.combine(d, end_timestamps[i])
TypeError:combine()参数2必须是datetime.time,而不是bytes
当取消注释最后一行并评论其上方的三行时,我得到以下内容:
dt = datetime.strptime(t1,FMT) - datetime.strptime(t2,FMT)
TypeError:必须是str,而不是datetime.time
所以我真的不明白。它是datetime.time
,但同时它不是......任何人都可以帮助我吗?
谢谢!
答案 0 :(得分:1)
某些对象是bytes
个对象,其他对象是datetime.time
个对象。换句话说,你有各种各样的对象。
请注意,在您的第一个错误中,end_timestamps[i]
失败了,而不是start_timestamps[i]
。因此,start_timestamps[i]
是一个time
对象。如果timestamps
bytes
个对象datetime.combine(d, start_timestamps[i])
中的所有对象都失败了。
您需要弄清楚ts.time()
调用中map()
次调用返回不一致数据类型的原因。