Un tel changement de nom est assez simple, par exemple avec les modules os et glob :
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
Vous pouvez ensuite l'utiliser dans votre exemple comme ceci:
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
L'exemple ci - dessus vous permet de convertir tous les *.doc
fichiers en c:\temp\xx
dir new(%s).doc
, où %s
est le précédent nom de base du fichier (sans extension).
%
symbole est-il utilisé dans la commandeos.path.join(dir, titlePattern % title + ext)
? Je sais que%
c'est pour le fonctionnement modulo et est également utilisé comme opérateur de formatage. Mais généralement, il est suivi dus
ouf
pour spécifier le format. Pourquoi rien (espace) immédiatement après%
dans ladite commande?Je préfère écrire de petites lignes pour chaque remplacement que je dois faire au lieu de créer un code plus générique et complexe. Par exemple:
Cela remplace tous les traits de soulignement par des traits d'union dans tout fichier non caché dans le répertoire courant
la source
rename
:(no such file error
juste rappelez-vousos.rename
besoin de chemin completSi cela ne vous dérange pas d'utiliser des expressions régulières, cette fonction vous donnerait beaucoup de pouvoir pour renommer les fichiers:
Donc, dans votre exemple, vous pouvez faire (en supposant que c'est le répertoire actuel où se trouvent les fichiers):
mais vous pouvez également revenir aux noms de fichiers initiaux:
et plus.
la source
J'ai ceci pour renommer simplement tous les fichiers dans les sous-dossiers du dossier
Je remplace toutes les occurrences de old_str par n'importe quel cas par new_str.
la source
Essayez: http://www.mattweber.org/2007/03/04/python-script-renamepy/
Le code source du programme est également disponible.
la source
J'ai écrit un script python par moi-même. Il prend comme arguments le chemin du répertoire dans lequel les fichiers sont présents et le modèle de dénomination que vous souhaitez utiliser. Cependant, il renomme en attachant un nombre incrémentiel (1, 2, 3 et ainsi de suite) au modèle de dénomination que vous donnez.
J'espère que cela fonctionne pour toi.
la source
la source
os.chdir(path_of_directory)
la source
J'ai eu un problème similaire, mais je voulais ajouter du texte au début du nom de fichier de tous les fichiers d'un répertoire et j'ai utilisé une méthode similaire. Voir l'exemple ci-dessous:
la source
quant à moi dans mon répertoire j'ai plusieurs sous-répertoires, chaque sous-répertoire a beaucoup d'images Je veux changer toutes les images de sous-répertoires en 1.jpg ~ n.jpg
(ma propre réponse) https://stackoverflow.com/a/45734381/6329006
la source
la source
Si vous souhaitez modifier les noms de fichiers dans un éditeur (tel que vim), la bibliothèque de clics est fournie avec la commande
click.edit()
, qui peut être utilisée pour recevoir les entrées utilisateur d'un éditeur. Voici un exemple de la façon dont il peut être utilisé pour refactoriser des fichiers dans un répertoire.J'ai écrit une application de ligne de commande qui utilise la même technique, mais qui réduit la volatilité de ce script, et est livrée avec plus d'options, telles que la refactorisation récursive. Voici le lien vers la page github . Ceci est utile si vous aimez les applications en ligne de commande et souhaitez apporter des modifications rapides aux noms de fichiers. (Mon application est similaire à la commande "bulkrename" trouvée dans ranger ).
la source
Ce code fonctionnera
La fonction prend exactement deux arguments f_patth comme chemin pour renommer le fichier et new_name comme nouveau nom du fichier.
la source