python скачать - Заменить команду в O.Rename




3 Answers

Вы можете попробовать shutil.move() :

from shutil import move

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

Или os.remove и затем shutil.move :

from os import remove
from shutil import move

remove('C:\\Users\\Tests.csv')
move('C:\\Users\\Test.txt', 'C:\\Users\\Tests.csv')
самоучитель для

Можно ли переименовать os.rename для перезаписывания другого файла, если он уже существует? Например, в коде ниже, если файл Tests.csv уже существует, он будет заменен файлом Tests.txt (который также был переименован в Tests.csv).

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



Поскольку в documentation говорится, что невозможно гарантировать операцию атомного переименования в Windows, если файл существует, поэтому Python делает запрос на выполнение двойного шага os.remove + os.rename самостоятельно, обрабатывая потенциальные ошибки.

В unix-системах rename перезаписывает место назначения, если оно существует (поскольку операция гарантирована как атомарная).

Обратите внимание, что в окнах также возможно, что удаление целевого файла завершится неудачно, даже если у вас есть разрешение, потому что файл может быть использован. Это еще одно существенное ограничение файловой системы Windows, и вы должны обрабатывать его самостоятельно в коде.




os.rename() , документация для os.rename() говорит, что она заменяет цель на Unix-системах, но в Windows это не так. Они упоминают что-то неопределенное в том, что невозможно реализовать атомное переименование, если место назначения существует в Windows, что ИМО вряд ли является достаточной причиной, чтобы не поддерживать его.

Вы должны поймать OSError (назначение существует в Windows) и удалить место назначения и повторить попытку, я полагаю.




Related

python

Tags

python