J'ai un répertoire où j'ai des fichiers XLSX et des fichiers Word DOC. Je souhaite renommer que des fichiers XLSX uniquement avec la dernière chaîne et la date d'aujourd'hui (DD / mm)
Mon chemin de fichier P>
25_DF_3/5.xlsx 28_DF_3/5.xlsx DF_30.doc
3 Réponses :
Utiliser ex: strong> p> str.endswith code> Pour vérifier l'extension de fichier et la renommée des fichiers.
Encore, il renonce au fichier DOC avec le fichier XLSX et si je l'exécute, c'est ajouter df_df_ comme ceci
de à p> Utiliser dd_mmm format p> _df est utilisé pour vérifier pour rechercher le fichier est déjà renommé ou non p>
Il est ajouté au fichier DOC au lieu du fichier XLSX I.E: df_30.doc_df_03_may
Édité maintenant chèque
Déterminez la ligne et courez pour renommer le nom d'origine
Pouvez-vous s'il vous plaît courir dans votre environnement avec un exemple d'exemple, vous pouvez voir le résultat. Il ne donne pas l'attendu
df_25.xlsx df_28.xlsx df_30.doc code> Assurez-vous que le fichier est comme celui-ci.
Laissez-nous Continuez cette discussion en chat .
Assurez-moi de me laisser exécuter et de vous revenir à vous
@Manoj Après exécution, il vient comme suit ce 1.xlsx_df_03_may au lieu de 1_df_03_may.xlsx
Voulez-vous exécuter le dernier code? Si une requête continue dans le chat
J'ai couru manoj ... quelque chose de petit manque dehors de cela, vous frappez sur la cible ... Malheureusement, nous obtenons le même résultat
ce que vous obtenez impression (* os.listdir (chemin), sep = '\ n') code> lors de l'ajout après et avant la boucle
Avant: df_1.xlsx.xlsx après: 1.xlsx_df_03_may.xlsx
Supprimer un .xlsx; Bande ajoutée
Merci @smart Manoj Vous êtes exceptionnel et très compréhensif
Voici ma solution. Notez que j'ai changé de barre oblique dans l'expression "DD / mm" sur DOT, car SLASH ne peut pas être utilisé dans le nom de fichier.
import os #IMPORT RE MODULE TO REMOVE ALL NON-NUMERIC SYMBOLS FROM FILE NAME import re from datetime import datetime #DEFINE D/M TO ADD TO NAME now = datetime.now().strftime('%d.%m').replace('0','') path = 'H:\Learning\Mohan' files = os.listdir(path) for file in files: #CHOOSE ONLY .XLSX FILE if file.endswith(".xlsx"): os.rename(os.path.join(path, file) , os.path.join(path, re.sub("[^0-9]", "",file) +'_DF_' + now + '.xlsx'))
Hi kev il fonctionne mais si j'exécute le script, il est resté à l'ajout comme ceci 13535_df_3.5 Ce que je m'attends à ce que je suis 1_df_3.5.xlsx
y compris
/ code> dans le nom de fichier est très dangereux.