Haftasonu tarihlerinde hata mesajı verme

Merhabalar,
Yazmaya çalıştığım kodlar Resmi Gazete’de yayınlanan bir önceki güne ait döviz kurları (url.jpg olarak) çekmeye yaramaktadır. Araç bu hali le çalışıyor ancak döviz kurunu çekmek istediğimiz tarih hafta sonuna denk geldiğinde aracın hata mesajı vermesini istiyorum.

Önerileriniz için şimdiden teşekkür ederim.

#!/usr/bin/python3

#kütüphaneler
import datetime
from tkinter import *
import urllib.request
import os

#alanlar
alanlar = {"Döviz Tarihi"}

#Hesaplama ve girdi tanımları
def doviz(entries):
    hasar_tar =  str(entries["Döviz Tarihi"].get())
    pit = datetime.datetime.strptime(hasar_tar, "%d.%m.%Y") + datetime.timedelta(days=1) #buradaki pit sabitindeki tarih haftasonuna geldiğinde hata vermesi gerekiyor.
    
    print(pit.strftime("%d"))
    print(pit.strftime("%m"))
    print(pit.strftime("%Y"))
    
    global year
    year = pit.strftime("%Y")
    
    global ay
    ay = pit.strftime("%m")
    
    global day
    day = pit.strftime("%d")
    
    indir()
    
    
def indir():    
    img = ("http://www.resmigazete.gov.tr/ilanlar/eskiilanlar/{yyyy}/{mm}/{yyyy}{mm}{dd}-5_dosyalar/image002.jpg".format(yyyy=year,mm=ay,dd=day))
    img_isim = "{dd}{mm}{yyyy} Tarihli MB Döviz Kuru".format(yyyy=year,mm=ay,dd=(int(day)-1))
    urllib.request.urlretrieve(img,img_isim)


#Şablon oluşturması    
def makeform(root, alanlar):
   entries = {}
   for field in alanlar:
      row = Frame(root)
      lab = Label(row, width=30, text=field+": ", anchor='w')
      ent = Entry(row)
      ent.insert(0,"")
      row.pack(side=TOP, fill=X, padx=10, pady=10)
      lab.pack(side=LEFT)
      ent.pack(side=RIGHT, expand=YES, fill=X)
      entries[field] = ent
   return entries

if __name__ == '__main__':
   root = Tk()
   ents = makeform(root, alanlar)
   #root.bind('<Return>', (lambda event, e=ents: fetch(e))) 
   def fetch(entries): 
    for entry in entries: 
        field = entry[0]
        text = entry[1].get() 
        print ("%s: %s" %(field,text)) 
   root.title("Döviz Kuru Çekme")
   b1 = Button(root, text='İndir', 
               command=(lambda e=ents: doviz(e)))
   b1.pack(side=LEFT, padx=5, pady=5)
   root.mainloop()
   b1 = Button(root, text='İndir',
              command=(lambda e=ents: doviz(e)))
   b1.pack(side=LEFT, padx=5, pady=5)
   root.mainloop()

Öncelikle kullanım ragatlığı açısından datetime.datetime’a fonksiyonuna gün, ay ve yıl değerlerini vermek daha güzel olacaktır.

import datetime

year, month, day = 2005, 5, 5 # örnek tarih değişkenleri

# <class 'datetime.datetime'> objesi oluşturuyoruz 
pir = datetime.datetime(year, month, day)

# oluşturduğumuz obje üzerinde bir çok fonksiyon kullanabiliriz
weekday_name = pir.strftime("%A") # %A tam hafta adını verir

# eğer hafta sonu adı cumartesi veya pazar ise hata mesajı ver
if weekday_name == ("Saturday" or "Sunday"):
    print("Hafta sonu olduğu için bir hata mesajı veriyorum...")
else:
    print(weekday_name)

strftime hakkında daha fazla bilgi için: https://www.tutorialspoint.com/python/time_strftime.htm

Kodları incele ve anlamaya çalış daha sonra kend projene uygula.

1 Beğeni

Tkinter’de uyarı penceresi (messagebox) açma:

import tkinter.messagebox as msgb
msgb.error('baslik', 'mesaj') #hata
msgn.critical(...) #kritik hata
msgn.info(...) #bilgi

Bunlardan birkaç tane daha olması gerek, ama anahtar kelimeyi verdim zaten.

1 Beğeni