Как реализовать копирование файлов с одинаковыми именами?
Как реализовать копирование файлов с одинаковыми именами под разными именами, а не перезаписывать созданный файл при нахождении одноимённого файла?
#КОД ИЩЕТ ФАЙЛ И КОПИРУЕТ ЕГО В УКАЗАННОЕ МЕСТО#
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')