Einführung
In diesem Projekt lernst du, wie du ein Wochenberichtsvorlage für ein neues Projektteam erstellst. Der Wochenbericht wird verwendet, um die täglichen Arbeiten des Projektteams zusammenzufassen, um regelmäßige Überprüfungen durchzuführen.
👀 Vorschau
## Beispiel
## start_date = datetime.date(2023,10,1) Sonntag
## end_date = datetime.date(2023,10,16) Montag
$ ls weekly
2023-10-06.txt 2023-10-13.txt 2023-10-16.txt
$ cat 2023-10-06.txt
2023-10-02
2023-10-03
2023-10-04
2023-10-05
2023-10-06
$ cat 2023-10-16.txt
2023-10-16
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du einen Ordner namens "weekly" erstellst, um die Dateien mit den Wochenberichtsvorlagen zu speichern
- Wie du den Freitag der Woche, die den Startdatum enthält, bestimmst
- Wie du die Dateien mit den Wochenberichtsvorlagen im Ordner "weekly" schreibst
- Wie du das Enddatum auf den vorangegangenen Freitag anpasst, wenn es am Samstag oder Sonntag fällt
- Wie du die endgültige Datei mit der Wochenberichtsvorlage für die letzte Woche des Projekts erstellst
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Wochenberichtsvorlagen automatisch basierend auf den Projektstart- und Enddatum zu generieren
- Sicherzustellen, dass die Wochenberichtsvorlagen nur Werktage enthalten und Wochenenden ausschließen
- Das Enddatum auf den vorangegangenen Freitag anzupassen, wenn es am Wochenende fällt
- Eine konsistente und organisierte Struktur für das Speichern der Wochenberichtsvorlagen zu erstellen
Erstelle den Ordner 'weekly'
In diesem Schritt lernst du, wie du den Ordner "weekly" erstellst, um die Dateien mit den Wochenberichtsvorlagen zu speichern.
- Öffne die Datei
report.pyin deinem Code-Editor. - Lasse den
create-Funktion im Code auf den. - Füge innerhalb der
create-Funktion folgenden Code hinzu, um den Ordner "weekly" zu erstellen:
import os
def create(start_date, end_date):
## Erstelle den Ordner "weekly"
os.makedirs("weekly", exist_ok=True)
## Rest des Codes...
Die Zeile os.makedirs("weekly", exist_ok=True) erstellt den Ordner "weekly" im selben Verzeichnis wie die Datei report.py. Der Parameter exist_ok=True stellt sicher, dass der Ordner auch dann erstellt wird, wenn er bereits existiert, was einen Fehler verhindert.
Bestimme den Freitag der Woche mit dem Startdatum
In diesem Schritt lernst du, wie du den Freitag der Woche findest, die das Startdatum enthält.
- Füge im
create-Funktion nach der Ordnererstellung folgenden Code hinzu:
import datetime
def create(start_date, end_date):
## Erstelle den Ordner "weekly"
os.makedirs("weekly", exist_ok=True)
## Finde den Freitag der Woche mit dem Startdatum
current_date = start_date
while current_date.weekday()!= 4: ## 4 steht für Freitag
current_date += datetime.timedelta(days=1)
## Rest des Codes...
Der Code verwendet eine while-Schleife, um die Tage beginnend vom Startdatum durchzugehen, bis das aktuelle Datum ein Freitag (Wochentag 4) ist. Dadurch wird sichergestellt, dass die Variable current_date auf den Freitag der Woche mit dem Startdatum gesetzt ist.
Schreibe die Wochenberichtsvorlagen-Dateien
In diesem Schritt lernst du, wie du die Dateien mit den Wochenberichtsvorlagen im Ordner "weekly" schreibst.
- Füge im
create-Funktion nach dem Finden des Freitags der Woche mit dem Startdatum folgenden Code hinzu:
def create(start_date, end_date):
## Erstelle den Ordner "weekly"
os.makedirs("weekly", exist_ok=True)
## Finde den Freitag der Woche mit dem Startdatum
current_date = start_date
while current_date.weekday()!= 4: ## 4 steht für Freitag
current_date += datetime.timedelta(days=1)
## Gehe den Zeitraum von Freitag der Woche mit dem Startdatum bis zum Enddatum durch
while current_date <= end_date:
## Konstruiere den Dateinamen
file_name = current_date.strftime("%Y-%m-%d") + ".txt"
file_path = os.path.join("weekly", file_name)
## Schreibe die Dateiinhalt
with open(file_path, "w") as file:
## Schreibe den Zeitraum der Werktage vom Startdatum bis zum aktuellen Freitag (ohne Wochenenden)
date = max(
start_date, current_date - datetime.timedelta(days=6)
) ## Stelle sicher, dass das Startdatum nicht früher als eine Woche vor dem aktuellen Freitag ist
while date <= current_date:
if date.weekday() < 5: ## 0 steht für Montag, 4 steht für Freitag
file.write(date.strftime("%Y-%m-%d") + "\n")
date += datetime.timedelta(days=1)
## Aktualisiere den aktuellen Freitag auf den nächsten Freitag
current_date += datetime.timedelta(days=7)
## Rest des Codes...
Der Code verwendet eine while-Schleife, um den Zeitraum von Freitag der Woche mit dem Startdatum bis zum Enddatum durchzugehen. Für jeden Freitag erstellt er eine Datei mit dem Wochenberichtsvorlage im Ordner "weekly" mit dem Datum des Freitags als Dateinamen.
Innerhalb jeder Datei schreibt der Code den Zeitraum der Werktage vom Startdatum (oder einer Woche vor dem aktuellen Freitag, je nachdem, was später ist) bis zum aktuellen Freitag, wobei die Wochenenden ausgeschlossen sind.
Anpassen des Enddatums an den vorangegangenen Freitag, sofern erforderlich
In diesem Schritt lernst du, wie du das Enddatum auf den vorangegangenen Freitag anpasst, wenn es am Samstag oder Sonntag fällt.
- Füge im
create-Funktion nach der Schleife, die die Dateien mit den Wochenberichtsvorlagen schreibt, folgenden Code hinzu:
def create(start_date, end_date):
## Erstelle den Ordner "weekly"
os.makedirs("weekly", exist_ok=True)
## Finde den Freitag der Woche mit dem Startdatum
#... (vorherige Schritte)
## Gehe den Zeitraum von Freitag der Woche mit dem Startdatum bis zum Enddatum durch
#... (vorheriger Schritt)
## Passt das Enddatum auf den vorangegangenen Freitag an, wenn es am Samstag oder Sonntag fällt
if end_date.weekday() == 5: ## 5 steht für Samstag
end_date -= datetime.timedelta(days=1)
elif end_date.weekday() == 6: ## 6 steht für Sonntag
end_date -= datetime.timedelta(days=2)
## Rest des Codes...
Der Code überprüft, ob das Enddatum am Samstag (Wochentag 5) oder Sonntag (Wochentag 6) fällt. Wenn ja, wird das Enddatum auf den vorangegangenen Freitag angepasst, indem jeweils 1 oder 2 Tage subtrahiert werden.
Dadurch wird sichergestellt, dass der Wochenberichtsvorlage für die letzte Woche nur die Werktage von Montag bis zum angepassten Enddatum enthält, wobei die Wochenenden ausgeschlossen sind.
Erstelle die Endwochenberichtsvorlagen-Datei
In diesem Schritt lernst du, wie du die Datei mit dem Wochenberichtsvorlage für die letzte Woche erstellst, beginnend am Montag der Woche, die das angepasste Enddatum enthält.
- Füge im
create-Funktion nach der Anpassung des Enddatums folgenden Code hinzu:
def create(start_date, end_date):
## Erstelle den Ordner "weekly"
os.makedirs("weekly", exist_ok=True)
## Finde den Freitag der Woche mit dem Startdatum
#... (vorherige Schritte)
## Gehe den Zeitraum von Freitag der Woche mit dem Startdatum bis zum Enddatum durch
#... (vorherige Schritte)
## Passt das Enddatum auf den vorangegangenen Freitag an, wenn es am Samstag oder Sonntag fällt
#... (vorheriger Schritt)
## Erstelle eine Einreichung für die Woche von Montag bis zum angepassten Enddatum
## Finde den Montag der Woche mit dem angepassten Enddatum
current_date = end_date
## Konstruiere den Dateinamen
file_name = current_date.strftime("%Y-%m-%d") + ".txt"
file_path = os.path.join("weekly", file_name)
while current_date.weekday()!= 0: ## 0 steht für Montag
current_date -= datetime.timedelta(days=1)
## Schreibe den Dateiinhalt
with open(file_path, "w") as file:
## Schreibe den Zeitraum der Werktage von Montag bis zum angepassten Enddatum (ohne Wochenenden)
date = current_date
while date <= end_date:
if date.weekday() < 5: ## 0 steht für Montag, 4 steht für Freitag
file.write(date.strftime("%Y-%m-%d") + "\n")
date += datetime.timedelta(days=1)
Der Code findet zunächst den Montag der Woche, die das angepasste Enddatum enthält. Anschließend konstruiert er den Dateinamen für die letzte Woche des Wochenberichtsvorlage und öffnet die Datei zum Schreiben.
Innerhalb der Datei schreibt der Code den Zeitraum der Werktage von Montag bis zum angepassten Enddatum, wobei die Wochenenden ausgeschlossen sind.
Dadurch wird sichergestellt, dass die Datei mit dem Wochenberichtsvorlage für die letzte Woche nur die Werktage von Montag der Woche, die das angepasste Enddatum enthält, bis zum angepassten Enddatum selbst enthält.
Mit den obigen Schritten hast du die Implementierung der create-Funktion in der report.py-Datei abgeschlossen, die die Wochenberichtsvorlagen basierend auf den angegebenen Start- und Enddaten generiert.
- Um die Wochenberichtsvorlagen zu generieren, führe das
report.py-Skript mit dem Befehlpython report.pyin deiner Konsole aus. Das Skript wird die Wochenberichtsvorlagen basierend auf den angegebenen Start- und Enddaten erstellen.
Einige Beispiele werden unten bereitgestellt:
## Beispiel 1
## start_date = datetime.date(2023,10,1) Sonntag
## end_date = datetime.date(2023,10,16) Montag
$ ls weekly
2023-10-06.txt 2023-10-13.txt 2023-10-16.txt
$ cat 2023-10-06.txt
2023-10-02
2023-10-03
2023-10-04
2023-10-05
2023-10-06
$ cat 2023-10-16.txt
2023-10-16
## Beispiel 2
## start_date = datetime.date(2023,9,10) Sonntag
## end_date = datetime.date(2023,9,24) Sonntag
$ ls weekly
2023-09-15.txt 2023-09-22.txt
$ cat 2023-09-15.txt
2023-09-11
2023-09-12
2023-09-13
2023-09-14
2023-09-15
$ cat 2023-09-22.txt
2023-09-18
2023-09-19
2023-09-20
2023-09-21
2023-09-22
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



