86 votes

Forcer l'écrasement dans Os.Rename

Est-il possible de forcer un renommer os.rename pour écraser un autre fichier s'il existe déjà ? Par exemple dans le code ci-dessous, si le fichier Tests.csv existe déjà, il sera remplacé par le fichier Tests.txt (qui a également été renommé en Tests.csv).

 os.rename("C:\Users\Test.txt","C:\Users\Tests.csv");

59voto

Blender Points 114729

Vous pouvez essayer shutil.move() :

 from shutil import move

move('C:\\Users\\Test.txt', 'C:\\Users\\Tests.csv')

Ou os.remove puis shutil.move :

 from os import remove
from shutil import move

remove('C:\\Users\\Tests.csv')
move('C:\\Users\\Test.txt', 'C:\\Users\\Tests.csv')

2voto

John Zwinck Points 43636

Assez drôle, la documentation pour os.rename() dit qu'il remplace la cible sur les systèmes Unix, mais pas sur Windows. Ils mentionnent quelque chose de vague à propos de l'impossibilité d'implémenter le renommage atomique si la destination existe sous Windows, ce que l'OMI est à peine une raison suffisante pour ne pas le prendre en charge.

Vous devriez attraper OSError (la destination existe sous Windows) et supprimer la destination et réessayer, je suppose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X