2016-11-11 242 views
0

私はいくつかのYouTubeリンクをテキストファイルに入れておき、プログラムがそのファイルを読み込む目覚まし時計を実装するためのPythonコードを書いています。私はどんなフォーマットでも好きな時間を設定しなければならず、その特定の時間にプログラムはファイルに保存されているものからランダムなリンクを選んで再生を開始します。 しかし、if elseの部分で私のプログラムは無限ループに陥っています。目覚まし時計用のPythonコード

誰でも私のミスコードを確認してください。あなたは時間比較にオレンジとりんごを比較しようとしている

import random 
import time 
import webbrowser 

from datetime import datetime 
import subprocess 

lines = open("C:\Python_code\Links.txt").read().splitlines() 
mylines = random.choice(lines) 
print(mylines) 

time_input = str(raw_input("Please enter the time in HH:MM:SS format: ")) 
current_date = str(raw_input("Please enter the date in YYYY/MM/DD format: ")) 
selected_time = datetime.strptime('%s %s'%(current_date, time_input),"%Y/%m/%d %H:%M:%S") 
print "Time selected: ",selected_time 

while True: 
    if selected_time == time.localtime(): 
     print "Alarm Now" 
     webbrowser.open(mylines) 
     break 
    else: 
     print "no alarm" 
+0

現在、これは有効なコードではありません。したがって、無限ループが発生するのではないかと思います。 – jonrsharpe

+0

空白の使用について考えてみてください。読むのがとても難しいです。いくつかの空白の行に付いてください。 –

答えて

0

:あなたは二つの異なるタイプを比較した場合

>>> import time 
>>> a=time.localtime() 
>>> a 
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=11, tm_hour=12, tm_min=20, tm_sec=13, tm_wday=4, tm_yday=316, tm_isdst=0) 
>>> type(a) 
<type 'time.struct_time'> 

>>> from datetime import datetime 
>>> b=datetime.strptime('2016/11/11 12:20:13',"%Y/%m/%d %H:%M:%S") 
>>> b 
datetime.datetime(2016, 11, 11, 12, 20, 13) 
>>> type(b) 
<type 'datetime.datetime'> 

、datetime.datetimeの持つtime.struct_timeは、あなたがそれも偽で表示されますこれらのオブジェクトに記録された時間が同じである場合。

>>> a == b 
False 

あなたはdatetime型にするstruct_timeを変換する場合、比較はその後、動作します:

>>> datetime.fromtimestamp(time.mktime(a)) 
datetime.datetime(2016, 11, 11, 12, 20, 13) 
>>> c=datetime.fromtimestamp(time.mktime(a)) 
>>> b==c 
True 
>>> type(c) 
<type 'datetime.datetime'> 

は、私はむしろあなた、むしろループよりも、常にあなたの目覚まし時計の時刻と現在の時刻を比較することを示唆している可能性がありtime.sleep()関数を使用します。あなたのアラーム時間から現在の時間を差し引き、その秒数の間スリープします。

+0

あなたのアドバイスをいただきありがとうございます –

関連する問題