指定された時間 (「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
スクリプトは、time.localtime() が stopTime 以上になるまで while ステートメントをループし、ループごとに if 条件をチェックする必要があります。time.localtime() が commandTime 以上になると、印刷コマンドが実行されます。
while ループと if ステートメントの両方で比較を行うために、time.mktime() を使用して datetime オブジェクトを Unix 時間 (浮動小数点数だと思います) に変換しています。
while ループは毎回確実に機能します。ほとんどの場合、実行に失敗するのは if ステートメントだけです。
Debian Squeeze 32 ビットで python 2.7.3 を実行しています。
私の質問は次のとおりです。条件が満たされたときに if ステートメントが実行されない原因となっている、このスクリプトで間違っていることは何ですか?
ありがとう!