Согласно документам :
shutil.make_archive (base_name, format [, root_dir [, base_dir [, verbose [, dry_run [, owner [, group [,logger]]]]]]])
Создайте файл архива (например, zip или tar) и верните его имя.
base_name - это имя файла для создания, включая путь, минус любойзависящее от формата расширение. форматом является формат архива: один из «zip» (если модуль zlib доступен), «tar», «gztar» (если модуль zlib доступен), «bztar» (еслимодуль bz2 доступен) или «xztar» (если модуль lzma доступен).
(выделение жирным шрифтом - мое).
Первый аргумент должен включать полное назначениепуть, если вы не хотите, чтобы файл находился в вашем текущем каталоге.
Итак, вы назначаете неправильный каталог root_dir
Я думаю.Согласно документации, root_dir
должно быть:
root_dir - это каталог, который будет корневым каталогом архива;например, мы обычно запускаем chdir в root_dir перед созданием архива.
Попробуйте сделать:
src = '/home/bart/python_projects/testenv/sampler_proj/sampler/media/audio/slices/'
dst = '/home/bart/python_projects/testenv/sampler_proj/sampler/media/audio/zipped/'
pth = os.path.join(dst, 'samples')
shutil.make_archive(pth, 'zip', root_dir=src, base_dir=src)
В большинстве случаев root_dir
и base_dir
- это один и тот же каталогтот, который вы хотите архивировать.Имеет смысл предоставить их оба для более сложных случаев, что не похоже на ваш случай.Например, если вы хотите зайти в каталог, а затем создать рекурсивный отдельный архив подкаталогов.