import pandas as pd import random import string def generate_password(): """ Génère un mot de passe aléatoire de 8 caractères contenant : - Au moins 1 majuscule - Au moins 1 minuscule - Au moins 1 chiffre - Au moins 1 caractère spécial """ # Définition des jeux de caractères upper = string.ascii_uppercase lower = string.ascii_lowercase digits = string.digits special = string.punctuation # On s'assure d'avoir au moins un caractère de chaque type password = [ random.choice(upper), random.choice(lower), random.choice(digits), random.choice(special) ] # On complète les 4 caractères restants avec un mélange de tous les types all_chars = upper + lower + digits + special password += [random.choice(all_chars) for _ in range(4)] # On mélange les caractères pour que l'ordre soit aléatoire random.shuffle(password) # On convertit la liste en chaîne de caractères return "".join(password) def main(): input_file = "Projet 01 - happy_koalas_employees.csv" output_file = "happy_koalas_employees_with_passwords.csv" try: # Lecture du fichier CSV (séparateur point-virgule) print(f"Lecture du fichier {input_file}...") df = pd.read_csv(input_file, sep=";") # Nettoyage des colonnes vides éventuelles df = df.dropna(axis=1, how='all') # Génération des mots de passe pour chaque ligne print("Génération des mots de passe...") df['Password'] = df.apply(lambda x: generate_password(), axis=1) # Sauvegarde dans un nouveau fichier df.to_csv(output_file, sep=';', index=False) print(f"Succès ! Le fichier a été sauvegardé sous : {output_file}") # Affichage d'un aperçu print("\nAperçu des 5 premiers utilisateurs :") print(df[['FirstName', 'LastName', 'Password']].head()) except FileNotFoundError: print(f"Erreur : Le fichier '{input_file}' est introuvable.") except Exception as e: print(f"Une erreur est survenue : {e}") if __name__ == "__main__": main()