J'ai un tas de fichiers dans un seul répertoire que je voudrais organiser dans les sous-répertoires.Copier des fichiers dans des répertoires comme spécifié dans une liste de fichiers avec python
Cette structure de répertoire (fichier qui irait dans quel répertoire) est spécifié dans une liste de fichiers qui ressemble à ceci:
Directory: Music\
-> 01-some_song1.mp3
-> 02-some_song2.mp3
-> 03-some_song3.mp3
Directory: Images\
-> 01-some_image1.jpg
-> 02-some_image2.jpg
......................
Je pensais à l'extraction des données (nom du répertoire et le nom du fichier) et le stocker dans un dictionnaire qui ressemblerait à ceci:
dictionary = {'Music': (01-some_song1.mp3, 02-some_song2.mp3,
03-some_song3.mp3),
'Images': (01-some_image1.jpg, 02-some_image2.jpg),
......................................................
}
Après cela, je voudrais copier/déplacer les fichiers dans leurs répertoires respectifs.
J'ai déjà extrait les noms de répertoire et créé les répertoires vides.
Pour les valeurs du dictionnaire j'ai essayé d'obtenir une liste de listes en procédant comme suit:
def get_values(file):
values = []
tmp = []
pattern = re.compile(r'^-> (.+?)$')
for line in file:
if line.strip().startswith('->'):
match = re.search(pattern, line.strip())
if match:
tmp.append(match.group(1))
elif line.strip().startswith('Directory'):
values.append(tmp)
del tmp[:]
return values
Cela ne semble pas fonctionner. Chaque liste de la liste values
contient les mêmes 4 noms de fichiers encore et encore.
Qu'est-ce que je fais mal?
J'aimerais aussi savoir quelles sont les autres façons de faire tout cela? Je suis sûr qu'il y a un moyen meilleur/plus simple/plus propre.
J'aime votre solution. C'est plus simple. Je n'ai pas pensé à le faire de cette façon. Le seul problème est que dans mon fichier, les noms de fichiers contiennent des espaces, donc je ne peux pas séparer l'espace. Je vais juste scinder ">" et utiliser strip() pour l'espace restant. Merci. –