Ordner mit heutigem Datum statt Namen erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sharky1001
User
Beiträge: 12
Registriert: Freitag 7. April 2017, 11:27

Guten Tag zusammen,
wie kann man mit Python automatisch einen Ordner mit heutigem Datum statt Name erstellen. Einfach mit Namen (strings) ist kein Problem ich benutzte einfach den folgenden Befehl:

import os
os.makedirs('C:\\Users\\Desktop\\ordner_mit_datum')

aber was ist wenn den Ordner statt Name einfach das heutige Datum haben muss. Was braucht Python noch um zu wissen welcher Tag ist gheute und wie kann man das in mein Fall benutzten bzw. kombinieren

Danke an allen die eine Antwort schreiben
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Code: Alles auswählen

from datetime import datetime as dt

def get_current_date(dateformat):
    return dt.now().strftime(dateformat)

def main():
    print(get_current_date('%d.%m.%Y'))
    print(get_current_date('%Y-%m-%d'))

if __name__ == '__main__':
    main()
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@snafu: wenn man sowohl Uhrzeit als auch Datum möchte, sollte man now nur einmal aufrufen. Daher ist die Funktion get_current_date nur beschränkt sinnvoll.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Von der Uhrzeit ist hier nirgends die Rede. snafu hat nur zwei Varianten gezeigt, wie man ein Datum schreiben könnte.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
BlackJack

Selbst wenn man nur das Datum will sollte man nur einmal aufrufen, sonst kann es um Mitternacht herum passieren das man zwei verschiedene Daten bekommt.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich verstehe die Kritik nicht wirklich. Man will doch das, was gerade aktuell ist. Eine Datei, die um 23:59 erstellt wurde, sollte ein anderes Datum im Namen haben als die Datei von 00:01.
BlackJack

@snafu: Die Kritik ist das zu oft Neulinge den Wert für *eine* Datei mehrfach neu bestimmen. Zum Beispiel um ein Verzeichnis mit dem Datum anzulegen, vorher auf dessen Existenz zu prüfen, und dann dort drin eine Datei mit Datum und Uhrzeit anzulegen. Und dafür dann dreimal `datetime.now()` aufrufen, statt einmal und das dann dreimal zu verwenden.

Dann gibt's auch immer noch die die für Datum und Uhrzeit zweimal `now()` aufrufen und das dann in einen Dateinamen formatieren, wo noch interessantere Sachen bei herauskommen können. Ein Aufruf pro Zeitkomponente (Stunden, Minuten, Sekunden) habe ich auch schon mal gesehen.

Falls jemand Dein Beispiel als Beispiel sieht wie man ein Datum auf zwei Arten formatiert und nicht wie man potentiell zwei verschiedene Datumsangaben formatiert, dann tappt der vielleicht auch in diese Falle. Wir wissen ja nicht mal ob Du diesen Fall auf dem Schirm hattest, und da ist es halt besser was zu sagen. IMHO.
sharky1001
User
Beiträge: 12
Registriert: Freitag 7. April 2017, 11:27

Hallo und vielen Dank an allen, die mir eine Antwort gegeben haben. Ich fand heute die Lösung für mein Problem. So sieht es aus:

import time
import os
date = (time.strftime("%d.%m.%Y"))
os.makedirs('C:\\Users\\Desktop\\' + date)

Ganz einfach. Mann kann auch statt Datum Uhrzeit nehmen.
BlackJack

@sharky1001: Dieses Datumsformat ist unüblich weil '%Y-%m-%d' auch alphabetisch sortiert die richtige zeitliche Reihenfolge ergibt, '%d.%m.%Y' dagegen nicht.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

BlackJack hat geschrieben:Falls jemand Dein Beispiel als Beispiel sieht wie man ein Datum auf zwei Arten formatiert und nicht wie man potentiell zwei verschiedene Datumsangaben formatiert, dann tappt der vielleicht auch in diese Falle. Wir wissen ja nicht mal ob Du diesen Fall auf dem Schirm hattest, und da ist es halt besser was zu sagen. IMHO.
Beim Benennen von Dateien legt man ja normalerweise ein Format fest, das man benutzen will. Wenn man zwei verschiedene Formate für den selben Zeitpunkt benötigt, dann sollte man das natürlich nicht so machen, weil dann im Ergebnis unterschiedliche Zeitpunkte rauskommen können. Dass jemand mein Vorgehen als realitätsnah ansehen könnte, hatte ich tatsächlich nicht bedacht. Auch hatte ich ehrlich gesagt nicht auf dem Schirm, dass man zum Formatieren auch einfach time.strftime() benutzen kann (wobei es in dieser Form auch nur bei einmaliger Verwendung für einen Zeitpunkt benutzt werden sollte)...
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Mit so etwas habe ich auch häufiger zu tun. Meine Standardlösung:

Code: Alles auswählen

>>> import datetime
>>> date = str(datetime.date.today())
>>> date
'2017-04-27'
Die macht genau das, was gefordert ist und ist einfach (2 Zeilen!). Den Umweg datetime.datetime.now() mit Stunden, Minuten und Sekunden würde ich nicht gehen.
Antworten