Je veux changer a.txt
pour b.kml
.
python
file-rename
zjm1126
la source
la source
C:/folder/file.txt
sous Windows ou/home/file.txt
sous Linux / MacOS).OSError
sur les systèmes Windows.os.path.exists
doit être utilisé pour vérifier si la cible existe avant de renommer. Cela crée un bogue "Time Of Check to Time Of Use", mais il est peu probable qu'il cause des problèmes. (Je ne connais aucun moyen facile de contourner cela - voir ici .os.replace
Le fichier peut se trouver dans un répertoire, dans ce cas précisez le chemin:
la source
Cela fonctionnera pour renommer ou déplacer un fichier.
la source
shutil.move
n'est pas une bonne option car il ne s'agit pas d'une opération atomique. Si le fichier est ouvert, par exemple,shutil.move
créera un fichier avecnew_name
, mais ne le supprimera pas,old_name
vous laissant donc deux fichiers.os.rename
d'autre part ne fera rien, ce qui est une meilleure option . Avecshutil.move
, même si vous avez détecté l'erreur, vous devrez toujours vous soucier de la vérification et de la suppression du fichier escroc. Tout simplement pas la peine quand un meilleur outil existe:os.rename
.Depuis Python 3.4, on peut utiliser le module pathlib pour résoudre ce problème.
S'il vous arrive d'être sur une ancienne version, vous pouvez utiliser la version rétroportée trouvée ici
Supposons que vous ne soyez pas dans le chemin racine (juste pour ajouter un peu de difficulté) que vous souhaitez renommer et que vous deviez fournir un chemin complet, nous pouvons regarder ceci:
Vous pouvez donc emprunter votre chemin et en créer un
Path
objet: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 de fichier de
the_file
àthe_file_1
, alors nous pouvons obtenir la partie nom de fichier:Et tenez également l'extension en main:
Nous pouvons effectuer notre modification avec une simple manipulation de chaîne:
Python 3.6 et supérieur utilise des chaînes f!
Autrement:
Et maintenant, nous pouvons effectuer notre changement de nom en appelant la
rename
méthode sur l'objet chemin que nous avons créé et en l'ajoutantext
pour compléter la structure de changement de nom appropriée:Plus brièvement pour montrer sa simplicité:
Python 3.6+:
Les versions inférieures à Python 3.6 utilisent à la place la méthode du format de chaîne:
la source
pathlib
bibliothèque est introduite en python 3.4, donc partager la réponse ici fournit également une exposition pour un module solide pour montrer sa polyvalence et son utilisation pour des exigences plus complexes.{}
sont pour le formatage des chaînes, que vous pouvez lire ici . En fin de compte, ce qui se passe est que le{}
get est remplacé par les variables transmises à laformat
méthode. Ainsi, le premier{}
contiendra ce qui est dedansname_without_extension
, et le second contiendra le deuxième argument qui est simplement1
.os.rename(old, new)
Cela se trouve dans les documents Python: http://docs.python.org/library/os.html
la source
Utilisez
os.rename
. Mais vous devez passer le chemin complet des deux fichiers à la fonction. Si j'ai un fichiera.txt
sur mon bureau, je vais le faire et je dois aussi donner plein de fichiers renommés.la source
la source
chdir()
à un répertoire, par exemple ce qui se passe sous Windows quand il s'agit d'un UNC? Et faire unchdir()
a des effets secondaires. Je préfère simplement spécifier les chemins nécessaires pouros.rename()
directement, pas d'chdir()
ing.Vous pouvez utiliser os.system pour appeler le terminal pour accomplir la tâche:
la source
mv
un programme de ligne de commande intégré à unix pour déplacer / renommer un fichier.la source
os.path
et le modernepathlib
est assez douteuse. Allez jusqu'au bout avecpathlib
.Cela devrait le faire. python 3+
la source