循环函数类似于Python中的Arduino

时间:2014-08-18 17:03:41

标签: python arduino raspberry-pi

我是编程新手,我对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

1 个答案:

答案 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()