Suite

Renommer les noms de fichiers en un format de nom de fichier standard à l'aide de Python

Renommer les noms de fichiers en un format de nom de fichier standard à l'aide de Python


Je travaille dans un environnement ESRI ArcGIS. J'ai un dossier plein de fichiers .xyz nommés dans un ancien format de fichier spécifique tel que2014516_MS_005.xyzJe veux pouvoir parcourir tout le dossier et renommer chaque fichier dans un nouveau format tel queMS_e1614.xyz. Comme vous pouvez le voir, il y a beaucoup de déplacements de chaînes et de nouveaux caractères introduits.

Pouvez-vous, les gars, les filles, m'indiquer la bonne direction s'il existe déjà une ressource similaire à cette question ?

Voici ce que j'ai pour l'instant.

import os survey_type = ['MB','SB'] #Chemin du fichier du répertoire d'intérêt dossier = r'C:Data ManagementImplementationxyz_data' #Liste de tous les fichiers dans le répertoire défini file_list = os.listdir(dossier) imprimer liste_fichier

Il existe plusieurs façons de le faire, mais la plus simple est peut-être d'utiliser os.rename(). Parcourez file_list et renommez-le en fonction de l'algorithme que vous utilisez. Pour votre exemple (non testé, essayez d'abord une copie de vos données) :

pour le fichier dans file_list : name_parts = file.split('_') # = ['2014516', 'MS', '005.xyz'] pre = '_'.join([name_parts[1], 'e'] ) # = 'MS_e' mid = name_parts[0][-2:] # = '16' suf = name_parts[0][2:4] # = '14' ext = '.xyz' new_file =".join( [pre, mid, suf, ext]) essayez : os.rename(file, new_file) except Exception as e : print('Exception is : {0}'.format(e)

Ceci est indépendant d'Arc. Comme indiqué ci-dessus, il existe d'autres méthodes, mais celle-ci en est une.


Je ne sais pas trop comment le nom de fichier d'origine se traduira par le nouveau nom de fichier, mais voici un extrait de python qui devrait vous mettre dans la bonne direction :

importer os pour fichier dans os.listdir('.'): if file.endswith('.xyz'): a = file.split('_') ## pour les mois 1 à 9 if len(a[0]) == 7: print 'working on ' + a[1] + '_e' + a[0][5:7] + a[0][2:4] + '.xyz' os.rename(file, a [1] + '_e' + a[0][5:7] + a[0][2:4] + '.xyz') ## pour les mois 10, 11, 12 si len(a[0]) == 8: print 'working on ' + a[1] + '_e' + a[0][6:8] + a[0][2:4] + '.xyz' os.rename(file, a [1] + '_e' + a[0][6:8] + a[0][2:4] + '.xyz')

Le code ci-dessus devra être enregistré dans le répertoire avec les fichiers que vous souhaitez renommer. Si vous souhaitez enregistrer cet extrait de code python ailleurs, vous devrez mettre à jour le répertoire à partir de '.' à l'emplacement des fichiers à renommer.

Ce fichier construit spécifiquement un tableau de tous les fichiers du répertoire cible (le tableau est nommé fichier).

Pour chaque élément du tableau, s'il se termine par « .xyz », il divisera la représentation sous forme de chaîne du nom de fichier par le trait de soulignement.

Chaque nom de fichier est désormais un tableau composé de la date, de l'abréviation de l'état et des chiffres après l'état. Vous verrez dans l'exemple ci-dessus que je choisis l'abréviation de l'état, concaténera '_e', puis concaténera uniquement les deux derniers chiffres de l'année et ce qui semble être le numéro du jour, pour finalement concaténer le nom de l'extension.


Voir la vidéo: Comment renommer des fichiers par lot avec Ant Renamer