我是编程新手,我对Arduino C编码有一些了解,但是,我想在Python中转向更复杂的Raspberry Pi编码。我喜欢在Arduino中你可以进入loop(),但是,我在Python中找不到类似的东西。我正在编写一个反复检查时间的程序,当时间到达某一点时,它会在代码中启动另一个函数。 “while True:”循环似乎不起作用。请忽略编码中的格式。当我复制它时,格式被搞砸了。编码是我主程序的基本思想。当它到达时,我需要它来打印一些东西。
while True:
import datetime
if datetime.time is (12, 15, 17, 000000):
print "TEST"
break
答案 0 :(得分:1)
你的while循环对我来说是正确的。问题(我相信)是你不太了解如何获得当前时间,并将其与你感兴趣的时间进行比较。
datetime.time
并不默认为当前时间,它实际上是包含时间的结构。它可以是任何时间,1:00:01 AM,1:13:00 PM(现在)等等。
如果您想获得当前时间,可以使用datetime.datetime.now().time()
。这样做是问datetime
类"嘿,当前的日期和时间是什么?",并返回包含该数据的datetime
对象。由于您只对当前时间感兴趣,因此添加.time()
将返回仅包含当前时间的time
对象。这应该替换代码中的datetime.time
。
至于你实际比较的是什么((12, 15, 17, 000000)
),你实际上需要告诉python使用time
对象而不是datetime.time(12, 15, 17, 000000)
。
另外,如上所述,在测试相等性时应使用==
。 is
关键字告诉您两个变量是否指向同一个对象,而不是两个不同的对象是否相等。除非您确定应该使用is
,否则您应该使用==
代替。
总的来说,我认为这应该有效:
import datetime
while True:
if datetime.datetime.now().time() == datetime.time(12, 15, 17, 000000):
print "TEST"
break
有关datetime
库的文档,请参阅this。
编辑:由于我没有足够的声誉来评论您的问题,所以如何让您的计划在特定日期工作:
根据文档here,您使用datetime
构建了一个datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond]]]])
对象,其中每个额外的括号都是可选的。
因此,我们必须从上面的代码中改变的唯一事情是使用datetime
对象而不是time
对象,这意味着我们只需要摆脱{{1} } part,并使用.time()
构造函数而不是datetime.datetime()
构造函数。
datetime.time()