J'ai donc un programme qui déchire ma collection de films mais j'essaie de l'automatiser davantage. Mon but est de rechercher dans chaque dossier et de rechercher un fichier ".mkv" et s'il est trouvé, déplacez-le dans le dossier racine puis supprimez le dossier d'origine.Déplacez les fichiers par extension vers le dossier racine en utilisant Python
Je me suis mis au travail et c'est opérationnel mais je suis curieux de savoir comment il pourrait être mieux écrit. Y a-t-il un moyen de faire essentiellement ce pseudo code?
loop each folder:
if folder has files:
if file extention is '.mkv':
move file to '/media/movies/'
La structure du dossier est
C:/Users/Matthew/Desktop/New folder (2)
- Test Movie
~ Test_Movie_t00.mkv
- Alpha Movie
~ Alpha_Movie_t200.mkv
- Greatest Movie Ever
~ Greatest_Movie_Ever_t100.mkv
~ Good Format Movie.mkv
~ Stackoverflow the Movie.mkv
Voici mon code qui fonctionne.
import os
import re
print("Running Cleaner\n")
directory = 'C:/Users/Matthew/Desktop/New folder (2)'
directorylength=len(directory)+1
folders = []
movies = []
for root, dirs, files in os.walk(directory, topdown=False):
for name in dirs:
#print(os.path.join(root, name)[strlength:])
folders.append(os.path.join(root, name)[directorylength:])
for folder in folders:
for file in os.listdir(directory + "/" + folder):
if file.endswith(".mkv"):
#print(os.path.join(folder, file))
movies.append(os.path.join(folder, file)[len(folder)+1:])
for folder in folders:
for movie in movies:
if os.path.exists(directory + "/" + folder + "/" + movie):
file=folder + "/" + movie
print("Found: " + file)
newFile = re.sub('_t\d{2,}.mkv',".mkv",file)
newFile = re.sub('_',' ',newFile)
newFile = newFile[len(folder)+1:]
print("Renaming to: " + newFile)
os.rename(directory + "/" + file, directory + "/" + newFile)
print("Removing empty folder: " + folder)
os.rmdir(directory + "/" +folder)
print("\nFinished Cleaning up!")
Avez-vous essayé d'utiliser glob? – liorko
Ajouter à https://codereview.stackexchange.com cela vous aider à obtenir une meilleure suggestion –