我真的很难理解为什么它不像我认为的那样工作。
修改:对于任何混淆,很抱歉,这是第一个不会执行的print
。 print('The alarm will sound at ' + result, flush=True)
在if time.strftime('%H:%M') == result
为True之前没有任何事情发生。无论我在哪里放置打印功能,它都不会运行,直到满足上述要求。即使在while
循环内,也不会运行。
#! /usr/bin/python
import argparse
import time
import datetime
def alarm(set_time):
set_time = str(set_time)[:2]+ ':' + str(set_time)[2:]
alarm_time = datetime.datetime.strptime(set_time,'%H:%M').strftime('%H:%M')
return alarm_time
def main():
parser = argparse.ArgumentParser()
parser.add_argument('wake', help='The time for the alarm to sound', type=str)
args = parser.parse_args()
result = alarm(args.wake)
print('The alarm will sound at ' + result, flush=True)
while True:
if time.strftime('%H:%M') == result:
print('Wake up')
return
else:
time.sleep(1)
pass
if __name__ == '__main__':
main()
答案 0 :(得分:0)
我建议您在下方进行更改。它工作正常。
import argparse
import time
import datetime
def main():
parser = argparse.ArgumentParser()
parser.add_argument('wake', help='The time for the alarm to sound', type=str)
args = parser.parse_args()
time_part = args.wake.split(':')
d = datetime.datetime.now()
wake_time = datetime.datetime(d.year, d.month, d.day, int(time_part[0]), int(time_part[1]), 0, 0)
print('The alarm will sound at ' + args.wake, flush=True)
while True:
if datetime.datetime.now() > wake_time:
print('Wake up')
return
else:
time.sleep(1)
pass
if __name__ == '__main__':
main()