2016-11-29 25 views
0

我想編寫一個腳本,python命令安排12.00h到13.30h之間的時間窗口

如果在12.00h和13.30h的時間內輸入高電平,它應該執行腳本。

如果輸入爲高電平且時間在12.00h-13.30h之外,則腳本不應執行。 我用下面的代碼嘗試了它,但它不起作用,解決方案是什麼?

#!/usr/bin/python 



import datetime 
import subprocess 
from subprocess import Popen 
import pifacedigitalio 
from time import sleep 
pfd = pifacedigitalio.PiFaceDigital() # creates a PiFace Digital object 
testprocess = None 
now = datetime.datetime.now() 

if now.hour == 12 or (now.hour == 13 and now.minute <= 30): 
    print(True) 
else: 
    print(False) 

    if pfd.input_pins[0].value == 1 and not testprocess: 
     sleep(2) 
     subprocess.Popen(["/bin/myscript"]) 
     sleep(5) 
     testprocess = Popen(["/bin/myscriptxy"]) 

     if pfd.input_pins[0].value == 0: 
      if testprocess: 
       testprocess.kill() 
       testprocess = None 
       sleep(5) 
       subprocess.Popen(["/bin/myscript"]) 
     sleep(1) 
+0

你的確意識到,你將'if pfd.input_pins ...'位放置在'else'分支中,對吧?這意味着它只會在你想要的時間週期內執行* – twalberg

+0

謝謝,現在它可以工作。 – user3804654

+0

如何更改從now.hour == 6或(now.hour == 8和now.minute <= 30): 到6:30和8:00h之間的時間 – user3804654

回答

1

datetime.datetime是方式比strftime的工作更加方便。

import datetime 
now = datetime.datetime.now() 
if now.hour == 12 or (now.hour == 13 and now.minute <= 30): 
    print(True) 
else: 
    print(False) 
+0

您好,我插入了您的代碼,但是它不工作,你可以請檢查它是否正確。謝謝。 – user3804654

+0

我可能會試着添加'nowtag = now.hour * 100 + now.minute',這樣條件就可以'if 1200 <= nowtag <1330'。但是這並沒有顯着改變功能 - 這只是我以前用過的一種視覺細節... – twalberg

+0

當我在命令行中啓動腳本時,它總是顯示false。 – user3804654