Création de modèles de rapport hebdomadaire

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à créer un modèle de rapport hebdomadaire pour une nouvelle équipe de projet. Le rapport hebdomadaire est utilisé pour résumer le travail quotidien de l'équipe de projet pour une revue régulière.

👀 Aperçu

## exemple

## start_date = datetime.date(2023,10,1)      Dimanche
## end_date = datetime.date(2023,10,16)       Lundi
$ 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

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment créer un dossier "weekly" pour stocker les fichiers de modèle de rapport hebdomadaire
  • Comment déterminer le vendredi de la semaine contenant la date de début
  • Comment écrire les fichiers de modèle de rapport hebdomadaire dans le dossier "weekly"
  • Comment ajuster la date de fin au vendredi précédent si elle tombe un samedi ou un dimanche
  • Comment créer le fichier de modèle de rapport hebdomadaire final pour la dernière semaine du projet

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Générer automatiquement des modèles de rapport hebdomadaires en fonction des dates de début et de fin du projet
  • Vérifier que les modèles de rapport hebdomadaires ne contiennent que des jours ouvrables, excluant les week-ends
  • Ajuster la date de fin au vendredi précédent si elle tombe sur un week-end
  • Créer une structure cohérente et organisée pour stocker les modèles de rapport hebdomadaires

Créer le dossier weekly

Dans cette étape, vous allez apprendre à créer le dossier "weekly" pour stocker les fichiers de modèle de rapport hebdomadaire.

  1. Ouvrez le fichier report.py dans votre éditeur de code.
  2. Localisez la fonction create dans le code.
  3. Dans la fonction create, ajoutez le code suivant pour créer le dossier "weekly" :
import os

def create(start_date, end_date):
    ## Crée le dossier "weekly"
    os.makedirs("weekly", exist_ok=True)

    ## Le reste du code...

La ligne os.makedirs("weekly", exist_ok=True) crée le dossier "weekly" dans le même répertoire que le fichier report.py. Le paramètre exist_ok=True garantit que le dossier est créé même s'il existe déjà, empêchant ainsi une erreur.

Déterminer le vendredi de la semaine de la date de début

Dans cette étape, vous allez apprendre à trouver le vendredi de la semaine contenant la date de début.

  1. Dans la fonction create, ajoutez le code suivant après la création du dossier :
import datetime

def create(start_date, end_date):
    ## Crée le dossier "weekly"
    os.makedirs("weekly", exist_ok=True)

    ## Trouve le vendredi de la semaine contenant la date de début
    current_date = start_date
    while current_date.weekday()!= 4:  ## 4 représente le vendredi
        current_date += datetime.timedelta(days=1)

    ## Le reste du code...

Le code utilise une boucle while pour itérer au travers des jours en commençant par la date de début jusqu'à ce que la date actuelle soit un vendredi (jour ouvrable 4). Cela garantit que la variable current_date est définie sur le vendredi de la semaine contenant la date de début.

Écrire les fichiers de modèle de rapport hebdomadaire

Dans cette étape, vous allez apprendre à écrire les fichiers de modèle de rapport hebdomadaire dans le dossier "weekly".

  1. Dans la fonction create, ajoutez le code suivant après avoir trouvé le vendredi de la semaine de la date de début :
def create(start_date, end_date):
    ## Crée le dossier "weekly"
    os.makedirs("weekly", exist_ok=True)

    ## Trouve le vendredi de la semaine contenant la date de début
    current_date = start_date
    while current_date.weekday()!= 4:  ## 4 représente le vendredi
        current_date += datetime.timedelta(days=1)

    ## Parcourez la plage de dates en commençant par le vendredi de la semaine de la date de début
    while current_date <= end_date:
        ## Construit le nom de fichier
        file_name = current_date.strftime("%Y-%m-%d") + ".txt"
        file_path = os.path.join("weekly", file_name)

        ## Écrit le contenu du fichier
        with open(file_path, "w") as file:
            ## Écrit la plage de jours ouvrables de la date de début jusqu'au vendredi actuel (excluant les week-ends)
            date = max(
                start_date, current_date - datetime.timedelta(days=6)
            )  ## Assurez-vous que la date de début n'est pas antérieure à une semaine avant le vendredi actuel

            while date <= current_date:
                if date.weekday() < 5:  ## 0 représente lundi, 4 représente le vendredi
                    file.write(date.strftime("%Y-%m-%d") + "\n")
                date += datetime.timedelta(days=1)

        ## Met à jour le vendredi actuel pour passer au vendredi suivant
        current_date += datetime.timedelta(days=7)

    ## Le reste du code...

Le code utilise une boucle while pour parcourir la plage de dates en commençant par le vendredi de la semaine de la date de début jusqu'à la date de fin. Pour chaque vendredi, il crée un fichier de modèle de rapport hebdomadaire dans le dossier "weekly" avec la date du vendredi comme nom de fichier.

Dans chaque fichier, le code écrit la plage de jours ouvrables de la date de début (ou une semaine avant le vendredi actuel, lequel est le plus récent) jusqu'au vendredi actuel, en excluant les week-ends.

Ajuster la date de fin au vendredi précédent si nécessaire

Dans cette étape, vous allez apprendre à ajuster la date de fin au vendredi précédent si elle tombe un samedi ou un dimanche.

  1. Dans la fonction create, ajoutez le code suivant après la boucle qui écrit les fichiers de modèle de rapport hebdomadaire :
def create(start_date, end_date):
    ## Crée le dossier "weekly"
    os.makedirs("weekly", exist_ok=True)

    ## Trouve le vendredi de la semaine contenant la date de début
    #... (étapes précédentes)

    ## Parcourez la plage de dates en commençant par le vendredi de la semaine de la date de début
    #... (étape précédente)

    ## Ajuste la date de fin au vendredi précédent si elle tombe un samedi ou un dimanche
    if end_date.weekday() == 5:  ## 5 représente le samedi
        end_date -= datetime.timedelta(days=1)
    elif end_date.weekday() == 6:  ## 6 représente le dimanche
        end_date -= datetime.timedelta(days=2)

    ## Le reste du code...

Le code vérifie si la date de fin tombe un samedi (jour ouvrable 5) ou un dimanche (jour ouvrable 6). Dans ce cas, il ajuste la date de fin au vendredi précédent en soustrayant 1 ou 2 jours respectivement.

Cela garantit que le modèle de rapport hebdomadaire pour la dernière semaine ne contient que les jours ouvrables du lundi jusqu'à la date de fin ajustée, en excluant les week-ends.

Créer le fichier de modèle de rapport hebdomadaire final

Dans cette étape, vous allez apprendre à créer le fichier de modèle de rapport hebdomadaire pour la dernière semaine, en commençant par le lundi de la semaine contenant la date de fin ajustée.

  1. Dans la fonction create, ajoutez le code suivant après avoir ajusté la date de fin :
def create(start_date, end_date):
    ## Crée le dossier "weekly"
    os.makedirs("weekly", exist_ok=True)

    ## Trouve le vendredi de la semaine contenant la date de début
    #... (étapes précédentes)

    ## Parcourez la plage de dates en commençant par le vendredi de la semaine de la date de début
    #... (étapes précédentes)

    ## Ajuste la date de fin au vendredi précédent si elle tombe un samedi ou un dimanche
    #... (étape précédente)

    ## Crée une soumission pour la semaine du lundi jusqu'à la date de fin ajustée
    ## Trouve le lundi de la semaine contenant la date de fin ajustée
    current_date = end_date

    ## Construit le nom de fichier
    file_name = current_date.strftime("%Y-%m-%d") + ".txt"
    file_path = os.path.join("weekly", file_name)

    while current_date.weekday()!= 0:  ## 0 représente le lundi
        current_date -= datetime.timedelta(days=1)

    ## Écrit le contenu du fichier
    with open(file_path, "w") as file:
        ## Écrit la plage de jours ouvrables du lundi jusqu'à la date de fin ajustée (excluant les week-ends)
        date = current_date
        while date <= end_date:
            if date.weekday() < 5:  ## 0 représente le lundi, 4 représente le vendredi
                file.write(date.strftime("%Y-%m-%d") + "\n")
            date += datetime.timedelta(days=1)

Le code trouve d'abord le lundi de la semaine contenant la date de fin ajustée. Il construit ensuite le nom de fichier pour le modèle de rapport hebdomadaire final et ouvre le fichier pour l'écriture.

Dans le fichier, le code écrit la plage de jours ouvrables du lundi jusqu'à la date de fin ajustée, en excluant les week-ends.

Cela garantit que le fichier de modèle de rapport hebdomadaire final ne contient que les jours ouvrables du lundi de la semaine contenant la date de fin ajustée jusqu'à la date de fin ajustée elle-même.

Avec les étapes ci-dessus, vous avez terminé l'implémentation de la fonction create dans le fichier report.py, qui génère les modèles de rapport hebdomadaires en fonction des dates de début et de fin fournies.

  1. Pour générer les modèles de rapport hebdomadaires, exécutez le script report.py avec la commande python report.py dans votre terminal. Le script créera les modèles de rapport hebdomadaires en fonction des dates de début et de fin fournies.

Voici quelques exemples :

## exemple 1

## start_date = datetime.date(2023,10,1)      Dimanche
## end_date = datetime.date(2023,10,16)       Lundi
$ 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

## exemple 2

## start_date = datetime.date(2023,9,10)     Dimanche
## end_date = datetime.date(2023,9,24)       Dimanche
$ 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
✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.