web-dev-qa-db-fra.com

Comment renommer un fichier en utilisant Python

Je veux changer a.txt à b.kml.

220
zjm1126

Utilisez os.rename :

import os

os.rename('a.txt', 'b.kml')
411
YOU
import shutil

shutil.move('a.txt', 'b.kml')

Cela fonctionnera pour renommer ou déplacer un fichier.

42
Andy Balaam

Le fichier peut se trouver dans un répertoire, dans ce cas, spécifiez le chemin:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
40
Abdul Razak

os.rename(old, new)

Cela se trouve dans les documents Python: http://docs.python.org/library/os.html

15
Joe

À partir de Python 3.4, vous pouvez utiliser le module pathlib pour résoudre ce problème.

Si vous utilisez une ancienne version, vous pouvez utiliser la version backported trouvée ici

Supposons que vous n'êtes pas dans le chemin racine (juste pour ajouter un peu de difficulté) que vous voulez renommer et que vous devez fournir un chemin complet, nous pouvons regarder ceci: 

some_path = 'a/b/c/the_file.extension'

Vous pouvez donc choisir votre chemin et créer un objet Path:

from pathlib import Path
p = Path(some_path)

Juste pour fournir des informations sur cet objet que nous avons maintenant, nous pouvons en extraire des choses. Par exemple, si pour une raison quelconque nous voulons renommer le fichier en modifiant le nom de fichier de the_file à the_file_1, alors nous pouvons obtenir la partie du nom de fichier:

name_without_extension = p.stem

Et tenez toujours l'extension en main aussi: 

ext = p.suffix

Nous pouvons effectuer notre modification avec une simple manipulation de chaîne:

new_file_name = "{}_{}".format(name_without_extension, 1)

Et maintenant, nous pouvons effectuer notre renommage en appelant la méthode rename sur l'objet de chemin que nous avons créé et en ajoutant la ext pour compléter la structure de renommage appropriée que nous voulons:

p.rename(Path(p.parent, new_file_name + ext))

Plus rapidement pour montrer sa simplicité: 

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.suffix))
10
idjaw

Utilisez os.rename. Mais vous devez passer le chemin complet des deux fichiers à la fonction. Si j'ai un fichier a.txt sur mon bureau, je le ferai et je devrai également donner un fichier renommé.

 os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
5
rajput56
import os

# Set the path
path = 'a\\b\\c'  
# save current working directory
saved_cwd = os.getcwd()
# change your cwd to the directory which contains files
os.chdir(path)
os.rename('a.txt', 'b.klm')
# moving back to the directory you were in 
os.chdir(saved_cwd)
4
Tilak

Vous pouvez utiliser os.system pour appeler un terminal afin d'accomplir la tâche:

os.system('mv oldfile newfile')
1
user5449023
    import os
import re
from pathlib import Path

for f in os.listdir(training_data_dir2):
  for file in os.listdir( training_data_dir2 + '/' + f):
    oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
    newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
    p=oldfile
    p.rename(newfile)
0
issam
import shutil
import os

files = os.listdir("./pics/") 

for key in range(0, len(files)):
 print files[key]
 shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")

cela devrait le faire. python 3+

0
Naveen