zipfile добавляет в архив лишние папки

При архивировании изображения:

import zipfile

def archiver(path_to_file, path_to_new_zip, filename = 'new_file'):
    new_file = zipfile.ZipFile(f'{path_to_new_zip}\{filename}.zip', 'w')
    new_file.write(path_to_file, compress_type=zipfile.ZIP_DEFLATED)
    new_file.close()
archiver(r'C:\Users\dimon\Desktop\zip archiver\files\aaa.jpg', r'C:\Users\dimon\Desktop\ziparchiver\zip', 'somefile') 

вместо того чтобы просто заархивировать изображение, добавляются все папки на пути к изображению: введите сюда описание изображения

введите сюда описание изображения

Как это исправить?


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

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

Можно передать в параметр arcname имя файла или путь, в коде ниже взял имя файла которое имеется у изначального файла path_to_file.split("\")[-1], можно указать любое другое, например new_image.jpg

import zipfile

def archiver(path_to_file, path_to_new_zip, filename = 'new_file'):
    with zipfile.ZipFile(f'{path_to_new_zip}\{filename}.zip', 'w') as new_file:
        new_file.write(path_to_file, arcname=path_to_file.split("\")[-1], compress_type=zipfile.ZIP_DEFLATED)
→ Ссылка