无法解决TypeError:无法排序的类型:time.struct_time()> float()

时间:2019-06-23 04:33:33

标签: python python-3.x time scheduler

我希望某个函数在特定的日期和时间运行。我正在使用scheduler.enterabs()。它给了我以下错误:

START: 1561263892.1316419
Traceback (most recent call last):
  File "timer.py", line 78, in <module>
    scheduler.run()
  File "/usr/lib/python3.5/sched.py", line 137, in run
    if time > now:
TypeError: unorderable types: time.struct_time() > float()
import sched,time
scheduler = sched.scheduler(time.time, time.sleep)
def print_event():
    print('inside print_event')
    print ('EVENT:', time.time())

print ('START:', time.time())
scheduler.enterabs(time.strptime("2019-06-23 09:55:00", "%Y-%m-%d %I:%M:%S"),1,print_event)

scheduler.run()

我想在特定的日期和时间运行print_event()。请帮我解决这个问题。在此先感谢:)

2 个答案:

答案 0 :(得分:0)

对于console.log

time参数应该是与传递给构造函数的timefunc函数的返回值兼容的数字类型。

因此,time.strptime的返回值是gmtime()或localtime()返回的struct_time,与time.time返回的浮点值不具有可比性。

检查此答案以获得更好的解释:

What does the Unorderable Type error mean in Python?

答案 1 :(得分:0)

赋予timefunc的{​​{1}}是sched.scheduler,它只与简单的浮点数一起用作时间。

这意味着给time.time的时间也必须是浮动的。 scheduler.enterabs返回一个strptime元组。

解决方案:使用struct_time将元组转换为浮动时间。