Как реализовать копирование файлов с одинаковыми именами?

Как реализовать копирование файлов с одинаковыми именами под разными именами, а не перезаписывать созданный файл при нахождении одноимённого файла?

#КОД ИЩЕТ ФАЙЛ И КОПИРУЕТ ЕГО В УКАЗАННОЕ МЕСТО#
import os

name = 'pic one.jpg'
disk = ('C:\\')

for root, dirs, files in os.walk(disk):

    if name in dirs or name in files:
    print(f'We find {name} in {root}')

    filen1 = (f'{root}' + str('\\') + f'{name}')
    filen2 = 'C:\\Users\\vcras\\Desktop\\test\\pic.jpg'

    file1 = open(filen1, 'rb')
    file2 = open(filen2, 'wb')

    file2.write(file1.read())

    file1.close()
    file2.close()
    print('COPY COMPLETED')

print ('THE END')

input()

Ответы (1 шт):

Автор решения: Viewed

Посмотрите в сторону модуля shutil.

Пример ниже проверяет существует ли уже файл с таким же именем, что и оригинал. Если да, добавляет к его имени уникальное число. Для примера, это общее число файлов до копирования нового len(listdir(outpath)).

from os import path, walk, listdir
from shutil import copy2

name = 'pic1.gif'
source = r'C:\\'
outpath = r'C:\\result'

for root, dirs, files in walk(source):
    if name in files:
        print(f'We find {name} in {root}')

        originalpath = path.join(root, name)
        copypath = path.join(outpath, name)

        if path.isfile(copypath):
            new_name = str(len(listdir(outpath))) + name 
            copypath = path.join(outpath, new_name)

        copy2(originalpath, copypath)

        print('COPY COMPLETED')

print ('THE END')
→ Ссылка