Après, par exemple, avoir ré-encodé vos vidéos, vous avez souvent un groupe de fichiers dans le même répertoire nommés par ex. MyMovie.avi et MyMovie.avi.mkv.
Le script suivant triera tous les fichiers avec le même préfixe (MyMovie) dans un répertoire appelé comme le préfixe. Ceci permet un tri et une comparaison faciles de ces fichiers.
Les autres fichiers ne seront pas touchés. L’opération est effectuée non-récursivement et aucun fichier ne sera écrasé.
Notez que la liste des extensions de fichier est codée en dur et les doubles extensions telles que .avi.mkv sont aussi traitées comme des extensions standard. La vérification d’extension est effectuée en utilisant .endswith()
group_files_by_prefix.py
#!/usr/bin/env python3
import argparse
import os
from collections import defaultdict
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("directory", help="path to the directory")
args = parser.parse_args()
directory = args.directory
extensions = [
".avi",
".mkv",
".mp4"
]
# Ajoute les extensions telles que ".avi.mp4" au début
# pour qu'on les vérifie en premier
extensions = [e1 + e2 for e1 in extensions for e2 in extensions] + extensions
files_by_prefix = defaultdict(list)
for file in os.listdir(directory):
# Sépare l'extension
for potential_extension in extensions:
if file.endswith(potential_extension):
file_prefix = file[:-len(potential_extension)]
files_by_prefix[file_prefix].append(file)
# Ignore les préfixes avec un seul fichier
files_by_prefix = {k: v for k, v in files_by_prefix.items() if len(v) > 1}
# Crée un répertoire pour chaque préfixe et déplace tous les fichiers dedans
for prefix, files in files_by_prefix.items():
os.makedirs(os.path.join(directory, prefix), exist_ok=True)
# Déplace le fichier si la destination n'existe pas
for file in files:
print(f"{file} -> {prefix}/{file}")
os.rename(os.path.join(directory, file), os.path.join(directory, prefix, file))
Consultez les articles similaires par catégorie :
Python
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow