尝试使 Python 程序使用日期时间在特定时间执行任务,但它不起作用,没有错误输出



我想从Python调度某个任务。我从文件中读取所需的开始时间,并将其与当前时间反复比较。 这是代码:

from datetime import datetime
import sys
current_time = datetime.now()
f = open("starttime.txt", "r")
start_time = f.read()
print(current_time)
print(start_time)
while True:
if str(current_time) == str(start_time):
print("the times match")
sys.exit()
else:
print('not yet')

print正常工作,但是当开始时间到来时,程序会继续打印"尚未"。 有什么办法可以解决这个问题吗?

编辑:我尝试了Prune在答案部分中提出的建议,但在尝试将str obj转换为datetime obj时出现错误,说格式不正确。 下面是代码行:start_time = datetime.strptime("2018-9-12 20:00:00.000000", '%Y, %m, %d, %H, %M, %S, %f')

编辑2:我的代码终于可以工作了! 谢谢李子!

您有两个问题:

  1. 您未能更新循环中的current_time:在您启动程序时它仍然卡住。
  2. 您正在检查完全匹配项。 由于now以微秒为单位返回时间,因此您不太可能在循环中达到确切的时间。 相反,我建议你使用不等式。

例如:

if datetime.now() >= start_time:

。已将start_time转换为datetime对象的位置。


做这三个问题。 您也没有正确设置datetime转换格式:字符串中的标点符号未以转换格式表示。 试试这个:

>>> datetime.strptime("2018-09-12 20:10:13.141593",
'%Y-%m-%d %H:%M:%S.%f')

结果:

datetime.datetime(2018, 9, 12, 20, 10, 13, 141593)

您作为输入的文件将在文件末尾包含 EOL(行尾(字符。首先尝试删除这些字符( \r 等(。

最新更新