私は毎朝私の街の天気を私にメールで知らせる簡単なプログラムに取り組んでいます。現時点では動作しますが、一度だけ動作します。 whileループを使用することで動作しますが、私は持っているので、それが今明らかに whileループを1回だけ使用する
while time == 0600:
send my mail etc
、その分全体のためになるようにそれを作ること、私はメールでスパムを取得、に設定しました。ですから、24時間に1回何か起こる方法を見つけ出す必要があります。
私のフルコードです(現在は再起動するまで、一度しか動作しません)。
import smtplib, pywapi, datetime
weather = True
loopmsg = True
loopmsg1 = True
def send():
loopmsg = True
loopmsg1 = True
global weather
while weather == True:
if loopmsg == True:
print('Initial Loop Initiated')
loopmsg = False
time = datetime.datetime.now()
time = str(time)
time = time[11:]
time = time[:-10]
time = time.replace(":", "")
time = int(time)
fromaddr = 'xxx'
toaddrs = 'xxx'
while time == 0600:
print('Time is correct')
weather_com_result = pywapi.get_weather_from_weather_com('ASXX0075')
msg = "It is " + weather_com_result['current_conditions']['text'].lower() + " and " + weather_com_result['current_conditions']['temperature'] + "°C in Your City."
msg = msg.encode('utf-8')
# Credentials (if needed)
username = 'xxx'
password = 'xxx'
# The actual mail send
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
print('Sent')
#weather = False
#while weather == False:
# if loopmsg1 == True:
# print('Second Loop Initiated')
# loopmsg1 = False
# while time > 0600:
# send()
send()
なぜ 'while'、' if'は1回だけ実行するのですか?とにかく:1. 'sendMail'フラグを追加し、sendルーチン内で' True'に設定します。 2. 'sentMail'が' True'のときは送信しません。 3. 'sentMail'を' False'にリセットする新しい 'if time == 0601'を追加します。 – usr2564301