Перемещение файлов и директорий, даже если они уже существуют в папке dest

1

Итак, я хочу скопировать некоторые файлы и каталоги из одного места в другое. Достаточно легко с shutil.move, но я столкнулся с проблемами, когда файлы или каталоги уже находятся в пункте назначения. Ошибка, которую я получаю, составляет Destination path '...' already exists.

Я попробовал os.rename, и он тоже не дал желаемых результатов. Есть ли простой способ скопировать файлы и структуру dir в другое место, даже если эти файлы и структура dir уже присутствуют в dest?

Вот что у меня сейчас:

fileList = os.listdir('/Users/john.leschinski/Desktop/testSrc')  
dest = '/Users/john.leschinski/Desktop/testMove'  
for i in fileList:  
    src = '/Users/john.leschinski/Desktop/testSrc/' + i  
    shutil.move(src,dest)
Теги:
move
shutil

1 ответ

5
Лучший ответ

Как насчет:

def move_over(src_dir, dest_dir):
    fileList = os.listdir(src_dir)
    for i in fileList:
        src = os.path.join(src_dir, i)
        dest = os.path.join(dest_dir, i)
        if os.path.exists(dest):
            if os.path.isdir(dest):
                move_over(src, dest)
                continue
            else:
                os.remove(dest)
        shutil.move(src, dest_dir)

src_dir = '/Users/john.leschinski/Desktop/testSrc'
dest_dir = '/Users/john.leschinski/Desktop/testMove'
move_over(src_dir, dest_dir)
  • 0
    Я получаю os.remove (dest) OSError: [Errno 1] Операция не разрешена
  • 0
    Может быть, у вас нет прав на удаление? Или, может быть, этот файл открыт другим процессом. Кстати, какую ОС вы используете? OS X?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню