Это в принципе не верный подход. while бесконечно ведь работает, до конца файла, так что никаких чанков не будет. Как и не будет никаких байт, вы их просто прочитали и забыли. При таком подходе, даже если заменить "r" на "wb" в последнем вашем условии, то вы получите только последний байт из исходного файла (хотя условие вряд ли сработает, файл на 15 байт это я не знаю)
Алгоритм простой
Определяем размер чанка, допустим это будет 10.000. Далее, открываем нужный файл в режиме rb, в бесконечном цикле пытаемся прочитать наш чанк (f.read(10000)). Если что-то прочиталось - открываем файл с чанком с индексом, (мы ведь хотим потом собрать начальный файл) в режиме wb, записываем туда наши байты. Если ничего не вернулось - break.
Ошибок в коде много, сама база выстроена неправильно. Так что проще удалить и написать заного. У вас как минимум выходгной файл почему-то один, какую роль играет file2? После прочтения с переменной byte ничего не происходит, в итоге файла даже не будет,
По поводу нового имени - просто добавляете к названию какой нибудь префикс или постфикс, или еще что нибудь, что вам нравится. Обычно это номер итерации цикла.
Если есть желаение учиться - нужно сделать все самому, алгоритм выше я написал, осталось только написать на его основе код. Учитывая легкость языка, то проблем быть не должно. Если не получилось, оставлю код как подсказку, но тогда и смысла мало.
код
chunk_size = 9000
with open(file, 'rb') as f:
i = 0
while True:
data = f.read(chunk_size)
if data:
with open(f'chunk_{i}', 'wb') as f2:
f2.write(data)
else:
break
i += 1