2016-10-30 14 views
0

私は本当にそれが私が思うように動作していない理由を理解するのに苦労しています。印刷機能が遅れるのはなぜですか?

編集:ご迷惑をおかけして申し訳ございませんが、実行されないのは最初のprintです。 print('The alarm will sound at ' + result, flush=True)

if time.strftime('%H:%M') == resultがTrueになるまで何も起こりません。印刷機能をどこに置いても、上記が満たされるまで実行されません。 whileループ内であっても、が実行されません。

#! /usr/bin/python 

import argparse 
import time 
import datetime 

def alarm(set_time): 

    set_time = str(set_time)[:2]+ ':' + str(set_time)[2:] 
    alarm_time = datetime.datetime.strptime(set_time,'%H:%M').strftime('%H:%M') 
    return alarm_time 

def main(): 

    parser = argparse.ArgumentParser() 
    parser.add_argument('wake', help='The time for the alarm to sound', type=str) 
    args = parser.parse_args() 

    result = alarm(args.wake) 
    print('The alarm will sound at ' + result, flush=True) 

    while True: 

     if time.strftime('%H:%M') == result: 
      print('Wake up') 
      return 
     else: 
      time.sleep(1) 
      pass 

if __name__ == '__main__': 
    main() 
+0

アイデアではないですか?私は...現在の時刻がアラームが鳴っている時間と一致するまで何も起こりませんか?ダニー...多分私は何かを欠いている... – BorrajaX

+0

ハングアップ;指定した時刻にアラームがアクティブにならない、または指定された時刻にのみアラームがアクティブになるということですか? – TigerhawkT3

+0

申し訳ありませんが、私は2番目の 'print'を忘れていました。書き直す。 これは、上記がTrueになるまで実行されない最初の 'print'です。 –

答えて

0

以下の変更をお勧めします。それはうまくいく。

import argparse 
import time 
import datetime 

def main(): 

    parser = argparse.ArgumentParser() 
    parser.add_argument('wake', help='The time for the alarm to sound', type=str) 
    args = parser.parse_args() 


    time_part = args.wake.split(':') 

    d = datetime.datetime.now() 

    wake_time = datetime.datetime(d.year, d.month, d.day, int(time_part[0]), int(time_part[1]), 0, 0) 


    print('The alarm will sound at ' + args.wake, flush=True) 

    while True: 

     if datetime.datetime.now() > wake_time: 
      print('Wake up') 
      return 
     else: 
      time.sleep(1) 
      pass 

if __name__ == '__main__': 
    main() 
+0

私のマシンでOPのコードが正常に動作します。これがどうやってその問題を解決するかは不明です。 – tdelaney

+0

Nick Bonne、他にも別のプリントを試してみることもできます。 'print( ''、end = '')'のようなものです。 'print( 'アラームが' + args.wake、flush = True 'で発音します)は私のために働きます。 – andercruzbr

関連する問題