web-dev-qa-db-fra.com

Renommez et déplacez le fichier avec python

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)
4
Zipper1365

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.

7
ShadowRanger

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é.

5
Danny

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)
0
Mathieu Bour

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 .

0
Ofer Arial