Réenvoi d'un code fonctionnel
Bonjour,
J'ai malencontreusement envoyé un mauvais code, on me demande d'en renvoyer un cependant je ne vois pas comment faire pour renvoyer mon code fonctionnel. Comment est-ce possible ?
Bav,
Bonjour super, merci beaucoup !
Alors voici le bon code qui aurait dû être envoyé :)
import pathlib
import time
suffix_dictionnary = {
"Musique": [".mp3", ".wav", ".flac"],
"Videos": [".avi", ".mp4", ".gif"],
"Images": [".bmp", ".png", ".jpg"],
"Documents": [".txt", ".pptx", ".csv", ".xls", ".odp", ".pages"]
}
base_dossier = pathlib.Path(r"C:\Users\jolan\Documents\ExercicesDocString\Data")
def move_element(element, dir_name):
target_dir = base_dossier / dir_name
target_dir.mkdir(exist_ok=True) # Crée le dossier s'il n'existe pas
new_element = target_dir / element.name
if new_element.exists():
stem, suffix = new_element.stem, new_element.suffix
counter = 1
while True:
new_name = f"{stem}_{counter}{suffix}"
new_element = target_dir / new_name
if not new_element.exists():
break
counter += 1
element.rename(new_element)
print(f"Fichier déplacé vers : {new_element}")
while True:
for cle, value in suffix_dictionnary.items():
for child in base_dossier.iterdir():
if value.contains(child.suffix):
print(f"{child.name} peut bouger vers le dossier {cle}")
move_element(child, cle)
time.sleep(10)
ça fonctionne :)
J'ai enlevé la while, utilisé un horodatage :)
Je récupère le chemin de manière dynamique pour mon base_dossier.
J'ai remplacé __contains__ par l'opérateur in, on est plus "zen" ^^.
Et on délace uniquement les fichiers en vérifiant avec is_file.
En tous cas bravo !
import pathlib
import time
# Dictionnaire qui associe les types de fichiers à leurs extensions
suffix_dictionnary = {
"Musique": [".mp3", ".wav", ".flac"],
"Videos": [".avi", ".mp4", ".gif"],
"Images": [".bmp", ".png", ".jpg"],
"Documents": [".txt", ".pptx", ".csv", ".xls", ".odp", ".pages"]
}
# On utilise le dossier courant comme dossier de base
base_dossier = pathlib.Path.cwd()
print("Démarrage du programme de tri...")
# On parcourt chaque type de fichier (Musique, Videos, etc.)
for dossier_type, extensions in suffix_dictionnary.items():
# On crée le dossier de destination s'il n'existe pas déjà
dossier_destination = base_dossier / dossier_type
dossier_destination.mkdir(exist_ok=True)
# On parcourt tous les fichiers du dossier courant
for fichier in base_dossier.iterdir():
# On vérifie si le fichier est du bon type
if fichier.suffix.lower() in extensions and fichier.is_file():
# On prépare le nouveau chemin du fichier
nouveau_fichier = dossier_destination / fichier.name
# Si un fichier avec le même nom existe déjà
if nouveau_fichier.exists():
# On crée directement un nom avec la date et l'heure actuelle
# pour être sûr d'avoir un nom unique
horodatage = time.strftime("%Y%m%d_%H%M%S")
nouveau_nom = f"{nouveau_fichier.stem}_{horodatage}{nouveau_fichier.suffix}"
nouveau_fichier = dossier_destination / nouveau_nom
# On déplace le fichier
fichier.rename(nouveau_fichier)
print(f"Fichier déplacé : {fichier.name} -> {dossier_type}")
print("Tri terminé !")
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte