Есть ли метод, который поможет узнать расширение файла?
import os
destination = open('C:\\photo\\' + new_name, 'wb+')
# не делайте так...
# k = str(destination)
# file_path = k[26:-2]
filename = destination.name # имя файла
filepath = os.path.abspath(filename) # полный путь к файлу
file_extension = os.path.splitext(filename)[1] # вернется кортеж: [0] - имя файла, [1] - расширение
Данный метод не хочет сохранять файлы расширений zip,py и т.д. С чем это связано?
Вы закрываете файловый дескриптор после записи первого чанка:
for chunk in file.chunks():
destination.write(chunk)
destination.close()
Если файл больше чем размер одного чанка (предположительно 4096 байт), то он конечно не запишется в файл полностью.
Вынесите
destination.close() за цикл. А еще лучше работайте с файлом через менеджер контекста:
with open('C:\\photo\\' + new_name, 'wb+') as destination:
for chunk in file.chunks():
destination.write(chunk)