Перемещение файлов и директорий, даже если они уже существуют в папке dest - PullRequest
2 голосов
/ 12 мая 2011

Итак, я хочу скопировать некоторые файлы и каталоги из одного места в другое. С 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)

1 Ответ

7 голосов
/ 12 мая 2011

Как насчет:

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)
...