2017-10-19 2 views
1

Cela pourrait être fait avec python, mais je pense qu'il me manque un moyen de boucler tous les répertoires. Voici le code que je utilise:Dossier contenant des sous-dossiers, contenant plusieurs fichiers (.xlsm, .pdf, .txt). Comment renommer les fichiers .pdf au nom des sous-dossiers?

import os 
def renameInDir(directory): 
    for filename in os.listdir(directory): 
     if filename.endswith(".pdf"): 
     path = os.path.realpath(filename) 
     parents = path.split('/') //make an array of all the dirs in the path. 0 will be the original basefilename 
     newFilename=os.path.dirname(filename)+directory +parents[-1:][0] //reorganize data into format you want 
     os.rename(filename, newFilename)//rename the file 
+0

Je n'ai pas comment les nouveaux noms de fichiers doivent être. Vous demandez-vous juste de supprimer l'extension PDF, ou essayez-vous de le remplacer? –

+0

Pourriez-vous nous informer si la solution ci-dessous a fonctionné pour vous? Si oui, pourriez-vous accepter la réponse? @Eduardo Valdez –

Répondre

0

Vous devriez aller avec os.walk(). Il mappera l'arborescence du répertoire par le paramètre de répertoire donné et générera les noms de fichiers.

L'utilisation os.walk() vous accomplissez le résultat souhaité est ainsi:

import os 
from os.path import join 
for dirpath, dirnames, filenames in os.walk('/path/to/directory'): 
    for name in filenames: 
     new_name = name[:-3] + 'new_file_extension' 
     os.rename(join(dirpath, name), join(dirpath, new_name))