Comment renommer un fichier en utilisant Python

je veux changer a.txt en b.kml .

172
demandé sur zjm1126 2010-03-22 12:59:23

10 réponses

Utilisation os.rename :

import os

os.rename('a.txt', 'b.kml')
317
répondu YOU 2018-03-28 13:39:29
import shutil

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

cela fonctionnera pour renommer ou déplacer un fichier.

39
répondu Andy Balaam 2010-03-22 10:00:41

fichier peut être à l'intérieur d'un répertoire, dans ce cas précisez 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)
31
répondu Abdul Razak 2017-07-27 14:24:53

os.rename(old, new)

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

11
répondu Joe 2017-07-27 14:25:49

depuis Python 3.4 on peut utiliser le module pathlib pour résoudre ce problème.

si vous êtes sur une version plus ancienne, vous pouvez utiliser la version rétroportée trouvée ici

supposons que vous n'êtes pas dans le chemin racine (juste pour y 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'

Donc, vous pouvez prendre votre chemin et de créer un Path objet:

from pathlib import Path
p = Path(some_path)

juste pour fournir quelques 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 du fichier de the_file à the_file_1 , alors nous pouvons obtenir la partie nom du fichier:

name_without_extension = p.stem

et encore tenir l'extension en main aussi bien:

ext = p.suffix

nous peut 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 path que nous avons créé et en ajoutant le ext pour compléter la structure de renommage appropriée que nous voulons:

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

en peu de temps pour montrer sa simplicité:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.ext))
6
répondu idjaw 2017-07-27 14:21:32

utiliser os.rename . Mais vous devez passer le chemin complet des deux fichiers à la fonction. Si j'ai un fichier a.txt sur mon bureau donc je vais le faire et aussi je dois donner plein de fichier renommé trop.

 os.rename('C:\Users\Desktop\a.txt', 'C:\Users\Desktop\b.kml')
4
répondu rajput56 2018-06-30 20:09:58
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)
3
répondu Tilak 2018-07-01 03:24:58

vous pouvez utiliser os.système d'invoquer terminal pour accomplir la tâche:

os.system('mv oldfile newfile')
1
répondu 2016-01-11 05:02:24
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")

ça devrait le faire. python 3 +

0
répondu Naveen 2017-09-30 12:40:02
    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)
-1
répondu issam 2018-05-31 13:22:53