Hallo Zusammen,
ich würde gerne einen Dateinamen und eine Vorgangsnummer generieren. Der Dateiname soll lauten Jahr (2 stellig) + KW . csv also z.B. "1940.csv". Leider erhalte ich mit untenstehendem Code folgendes:
('19', 40, '.csv')
19 40 .csv
Kann Jemand helfen?
#Dateinamen & Vorgangsnummer
##Kalenderwoche
import datetime
KW = (datetime.date.today().isocalendar()[1])
str(KW)
##Jahr
import time
Jahr = (time.strftime('%y'))
str(Jahr)
##Dateiname
DateinameVorgaengeKW = Jahr, KW, ".csv"
print(DateinameVorgaengeKW)
print(Jahr,KW,'.csv')
Ungewollte Leerzeichen beim verketten von Variablen
Ich würde das als f-String formatieren:
Variablen schreibt man in Python übrigens klein, wenn man sich an gutem Stil (Stichwort: "PEP 8") halten will...
Code: Alles auswählen
dateiname = f'{jahr}{kw}.csv'
Du generierst keinen Dateinamen, sondern gibts drei Variablen aus.
Und bei der Ausgabe wird dazwischen ein Leerzeichen ausgegeben, für die bessere Lesbarkeit.
Warum generierst Du das Jahr per strftime, den Wochentag aber per datetime?
Da Du zweimal das aktuelle Datum damit abfragst, kann es vorkommen, dass das die beiden nicht zusammenpassen. Daher immer nur einmal das Datum abfragen. Zudem benutzt Du die ISO-Woche, aber nicht das ISO-Jahr. Weißt Du, was das ISO-Jahr ist und willst Du es tatsächlich benutzen?
Die Aufrufe von `str` sind überflüssig, da Du mit dem Rückgabewert nichts machst.
oder
Und bei der Ausgabe wird dazwischen ein Leerzeichen ausgegeben, für die bessere Lesbarkeit.
Warum generierst Du das Jahr per strftime, den Wochentag aber per datetime?
Da Du zweimal das aktuelle Datum damit abfragst, kann es vorkommen, dass das die beiden nicht zusammenpassen. Daher immer nur einmal das Datum abfragen. Zudem benutzt Du die ISO-Woche, aber nicht das ISO-Jahr. Weißt Du, was das ISO-Jahr ist und willst Du es tatsächlich benutzen?
Die Aufrufe von `str` sind überflüssig, da Du mit dem Rückgabewert nichts machst.
Code: Alles auswählen
import datetime
year, week, weekday = datetime.date.today().isocalendar()
filename = f"{year%100:02d}{week:02d}.csv"
Code: Alles auswählen
import datetime
today = datetime.date.today()
filename = f"{today:%g%V}.csv"
Zuletzt geändert von Sirius3 am Donnerstag 3. Oktober 2019, 16:12, insgesamt 1-mal geändert.
Du solltest Bedenken dass die Kalendarwoche mit der Woche beginnt, in welche der erste Donnerstag fällt. Dementsprechend kann es schonmal sein dass du von der Kalendarwoche her schon vor Neujahr im neuen Jahr bist. Du bestimmst das Jahr also falsch. Außerdem gibt es einen ISO Standard um Kalendarwochen anzugeben.
Hält man sich an dass alles kommt sowas bei rum:
Hält man sich an dass alles kommt sowas bei rum:
Code: Alles auswählen
In [5]: from datetime import date
In [6]: dt = date.today()
In [7]: dt.strftime('%G-W%V')
Out[7]: '2019-W40'
-
- User
- Beiträge: 17
- Registriert: Mittwoch 25. September 2019, 08:15
Super, vielen Dank! Alle Antworten ware sehr hilfreich. Habe es jetzt so gelöst:
#Formel für Kalenderwoche die auch zum Jahreswechsel richtig funktioniert
from datetime import date
dt = date.today()
dateiname = f"Vorgaenge/{dt.strftime('%g%V')}.csv"
#Formel für Kalenderwoche die auch zum Jahreswechsel richtig funktioniert
from datetime import date
dt = date.today()
dateiname = f"Vorgaenge/{dt.strftime('%g%V')}.csv"