Zasady Pythona a prostota kodu

0

Dzień dobry wszystkim,
zaczynam uczyć się programowania i to właśnie od Pythona. Ogólnie na razie daję sobie radę przy dużej pomocy wujka Google, ale, ponieważ zależy mi na dobrych nawykach od samego początku :) mam pytanie do praktyków dotyczące zasady "Proste jest lepsze niż złożone.".
Otóż potrzebuję dla pewnego skryptu dodać bieżącą datę do nazwy pliku. Popełniłem w związku z tym taki oto kod:

datetoday = str(datetime.now().year) + ( str(datetime.now().month) if len(str(datetime.now().month))==2 else ('0'+str(datetime.now().month)) ) + ( str(datetime.now().day) if len(str(datetime.now().day))==2 else ('0'+str(datetime.now().day)) )

i działać to działa, ale zrodziła mi się wątpliwość, czy to jest na pewno proste rozwiązanie... Czy nie lepiej stworzyć trzy osobne zmienne na dzień, miesiąc, rok i w nich sprawdzać długość ciągu, a później je skleić? Czy w ogóle napisać jakąś odrębną funkcję na bieżący dzień? Jak wspomniałem, chciałbym napisać skrypt zgodnie z dobrą praktyka, tylko co to oznacza w konkretnym przypadku?
Czy w ogóle za bardzo sobie zawracam głowę takimi filozoficznymi rozważaniami i jest to wszystko jedno, byle działało?
Z góry dzięki za wszelkie podpowiedzi.
Pozdrawiam!
socetk

3

Wiesz, że za każdym pobraniem czasu dostajesz nieco inny timestamp wołając raz po raz datetime.now()? W skrajnym przypadku, gdybyś naprawdę napsuł w kodzie i jeszcze pobierał ten czas na przełomie 2019 i 2020 roku, mógłbyś finalnie dostać datę 31.12.2020 :P

2

A nie lepiej uzyc date z datetime[0]?
I zamknac to w funkcji?
[0]https://www.programiz.com/python-programming/datetime

4

Dlaczego nie skorzystasz z:

from datetime import date

today = date.today()
print(f"{today:%d}")
print(f"{today:%m}")

? :)

0
cmd napisał(a):

Dlaczego nie skorzystasz z:

from datetime import date

today = date.today()
print(f"{today:%d}")
print(f"{today:%m}")

? :)

Ooo... widzisz, nie skorzystałem z tego dlatego, że to mój czwarty czy piąty skrypt w Pythonie i nie miałem pojęcia, że tak będzie łatwiej :)
To jest właśnie to o co chodziło, porada praktyka :)
Dzięki wielkie, tak jest faktycznie prościej.

0
lion137 napisał(a):

A nie lepiej uzyc date z datetime[0]?
I zamknac to w funkcji?
[0]https://www.programiz.com/python-programming/datetime

Skorzystałem też z linka, który podałeś, zatem dzięki wielkie, bo zrobiłem to samo jeszcze prościej niż myślałem:

datetoday = date.today().strftime("%Y%m%d")

I to jest proste, szybkie i eleganckie, faktycznie... :)

0
superdurszlak napisał(a):

Wiesz, że za każdym pobraniem czasu dostajesz nieco inny timestamp wołając raz po raz datetime.now()? W skrajnym przypadku, gdybyś naprawdę napsuł w kodzie i jeszcze pobierał ten czas na przełomie 2019 i 2020 roku, mógłbyś finalnie dostać datę 31.12.2020 :P

Nie wiedziałem, oczywiście :)
Wiem, kod powinien być uniwersalny, ale w moim przypadku o tyle nie jest to niebezpieczne, że skrypt będzie wywoływany automatycznie codziennie w dni robocze o 7:20 :)
Teoretycznie nie powinna się zatem zdarzyć opisana sytuacja. Aczkolwiek zapamiętam, zresztą ostatecznie podpowiedziana mi postać funkcji i tak jest prostsza i bardziej zwięzła.

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