У меня есть небольшой скрипт, который я собирался использовать для выполнения системной команды в указанное время ("commandTime"), а затем выйти через указанное время ("stopTime"). Однако, когда я запускаю скрипт, он чаще всего никогда не выполняет команду в операторе «если». (Иногда он будет выполняться, а иногда нет.)
Предполагая, что я не полный идиот (присяжные все еще не согласны с этим...) и разумно устанавливаю переменные времени, сценарий должен выполнить команду печати внутри оператора if, когда 'time.mktime(time.localtime()) ' равно или больше отформатированной переменной commandTime.
Вот отрывок рассматриваемого кода:
import time
commandTime = time.strptime('2013-03-01 05:00:00', "%Y-%m-%d %H:%M:%S")
stopTime = time.strptime('2013-03-01 05:10:00', "%Y-%m-%d %H:%M:%S")
while (time.mktime(time.localtime()) <= time.mktime(stopTime)):
if (time.mktime(time.localtime()) >= time.mktime(commandTime)):
print "Green team go"
time.sleep(100)
Предположим, что переменные stopTime и commandTime установлены таким образом, что при выполнении скрипта выполняется следующее: time.localtime() ‹ commandTime ‹ stopTime
Сценарий должен циклически выполнять оператор while до тех пор, пока time.localtime() не станет равным или больше, чем stopTime, проверяя условие if в каждом цикле. Когда time.localtime() больше или равно commandTime, должна выполняться команда печати.
Я использую time.mktime() для преобразования объекта datetime во время Unix (я думаю, с плавающей запятой), чтобы выполнить сравнение как в цикле while, так и в операторе if.
Цикл while надежно работает каждый раз, только оператор if не выполняется большую часть времени.
Я использую python 2.7.3 на 32-разрядной версии Debian Squeeze.
Мой вопрос заключается в следующем: что я делаю неправильно в этом сценарии, из-за чего оператор if не выполняется при выполнении условия?
Спасибо!