Wykrywanie weekendu lub wyrzucenie komunikatu o braku możliwości pobrania danych

0

Witajcie. Przelicznik walut już prawie ukończony w pythonie, jednakże mam w nim opcję pobrania kursów w danej daty. I wszystko ładnie pięknie działa do momentu, aż nie wpiszę jakiejś weekendowej daty (której w bazie nie ma bo kursy nie zmieniają się w dni wolne). Czy jest możliwość, aby np. wyskakiwał komunikat o braku możliwości pobrania danych?

Program wygląda mniej więcej tak:
screenshot-20190527125932.png

Linijka kodu, gdzie odbywa się pobieranie kursu (wydaje mi się, że tutaj powinien być jakiś warunek, że w razie błędu wyskakuje komunikat)

def Pobieranie_kursow(self):
        data = self.dataEdt.text()
        url = urllib.request.urlopen('http://api.nbp.pl/api/exchangerates/rates/a/EUR/'+data)
        soup = BeautifulSoup(url, 'html.parser')
        self.EURkurs = ast.literal_eval(str(soup))['rates'][0]['mid']

Pozdrawiam
Piotr

1

Uzyj sobie weekday, mozesz przeliczyc lokalnie przed wysylaniem i jak weekend to nie wysylasz, robisz obsluge bledu itp. https://stackoverflow.com/questions/9847213/how-do-i-get-the-day-of-week-given-a-date-in-python

0

https://4programmers.net/Forum/Python/262929-odlegla_data_ - był podobny wątek na naszym forum. Możesz skorzystać z podanego w nim sposobu, a następnie zachować się w odpowiedni sposób: jeśli dany dzień jest weekendem to nie pobieraj niczego, tylko wyświetl stosowny komunikat, natomiast jeśli to "zwykły" dzień, to zaciągnij dane.

Tak od razu przyszły mi do głowy dwie rzeczy:

  1. jeśli to był weekend, to możesz zasugerować użytkownikowi możliwość pobrania kursów z piątku albo poniedziałku
  2. co w sytuacji, jeśli dany dzień, mimo że wypadał w środku tygodnia, jednak był dniem wolnym/bez kursów do pobrania? Nie wiem jak to działa, ale logika podpowiada, że np. w Nowy Rok, albo w niektóre święta wszystko stoi, więc być może w takie dni także nie będzie wartości do pobrania.
0

Dzięki za szybkie odpowiedzi. Weekday właśnie próbuję użyć ale nie mogę ominąć błędu, chyba nie mogę tego w taki sposób użyć:

import datetime

data = "2019-05-27"

weekno = data.weekday()

if weekno<5:
    print(Weekday)
else:
    print(Weekend)

A co do np. nowego roku - tu się właśnie pojawia problem...I nie wiem czy nie lepiej byłoby zrobić tego jako try i except error, z tym, że mam problem z zaimplementowaniem tego jako mega początkujący w Pythonie :/

0

Dobra, odrzucamy metodę wykrywania weekendu bo faktycznie będzie to potem problematyczne. Tak wygląda program do pobrania kursu:

from bs4 import BeautifulSoup
import urllib.request
import ast

data = "2019-05-27"
url = urllib.request.urlopen('http://api.nbp.pl/api/exchangerates/rates/a/EUR/'+data)
soup = BeautifulSoup(url, 'html.parser')
EURkurs = ast.literal_eval(str(soup))['rates'][0]['mid']
print(EURkurs)

Podpowiedzcie mi proszę, jak tu wstawić warunek, że w momencie problemu z pobraniem wyskoczy komunikat: "Brak kursu z tego dnia"
Z góry dziękuję

EDIT:
Problem rozwiązany ;) W razie gdyby ktoś potrzebował działającego kodu, proszę bardzo:

from bs4 import BeautifulSoup
import urllib.request
import ast

data = "2019-05-26"
try:
    url = urllib.request.urlopen('http://api.nbp.pl/api/exchangerates/rates/a/EUR/'+data)
    soup = BeautifulSoup(url, 'html.parser')
    EURkurs = ast.literal_eval(str(soup))['rates'][0]['mid']
    print(EURkurs)
except urllib.error.HTTPError as err:
    print("Brak kursów do pobrania")

1 użytkowników online, w tym zalogowanych: 0, gości: 1