J'ai un script python qui compare les noms de fichiers existants dans un dossier à une table de référence et détermine ensuite s'il doit être renommé ou non.
En parcourant chaque nom de fichier:
'oldname' = the current file name
'newname' = what it needs to be renamed to
Je souhaite renommer le fichier et le déplacer dans un nouveau dossier "..\renamedfiles"
Est-ce que je peux renommer et déplacer en même temps qu'il parcourt la boucle?
Mise à jour: Excuses, je suis assez vert avec les scrp en général mais cela semble être assez basique. shutil.move est exactement ce dont j'avais besoin MERCI - je ne savais tout simplement pas le chercher. Test réussi ci-dessous. Maintenant, insérez-le dans le script.
import shutil
os.chdir ('C:\Users\me\Desktop\New folder')
renFolder= 'Renamed'
oldname = 'Test.txt'
newname= 'renTest.txt'
shutil.move(oldname, renFolder+'/'+newname)
os.rename
(et os.replace
) ne fonctionnera pas si les emplacements source et cible se trouvent sur des partitions/lecteurs/périphériques différents. Si tel est le cas, vous devez utiliser shutil.move
, qui utilisera si possible le renommage atomique, et un repli sur copier-puis-supprimer si la destination ne se trouve pas sur le même système de fichiers. Il est parfaitement heureux de déplacer et de renommer la même opération. l'opération est la même malgré tout.
Oui tu peux faire ça. En python, vous pouvez utiliser la fonction move de la bibliothèque shutil pour y parvenir.
Disons que sur linux, vous avez un fichier dans le dossier/home/user/Downloads nommé "test.txt" et que vous voulez le déplacer vers/home/user/Documents et changer le nom en "nom_utile.txt". Vous pouvez faire les deux choses dans la même ligne de code:
import shutil
shutil.move('/home/user/Downloads/test.txt', '/home/user/Documents/useful_name.txt')
Dans votre cas, vous pouvez faire ceci:
import shutil
shutil.move('oldname', 'renamedfiles/newname')
À votre santé.
Créez un fichier Python dans le répertoire de votre choix et écrivez quelque chose comme ça:
import os
for filename in os.listdir("."):
if(filename ...):
newFilename = ...
os.rename(filename, newFilename)
Pour effectuer les deux opérations, vous pouvez utiliser la fonction os.rename(src, dest)
.
Vous devez avoir le répertoire souhaité pour enregistrer le fichier et le nouveau nom de fichier. Vous pouvez le faire pour chaque fichier que vous rencontrez dans votre boucle.
Par exemple:
dest_dir = "/tmp/2"
new_name = "bar.txt"
current_file_name = "/tmp/1/foo.txt"
os.rename(current_file_name, dest_dir+"/"+new_name)
La fonction rename
vous permet de changer le nom du fichier et son dossier en même temps.
Pour éviter toute erreur lors du renommage et du déplacement du fichier, utilisez shutil.move .