Первым аргументом zipfile.ZipFile
должен быть полный путь к архиву, который вы создаете. Внесите изменения в zip_dir
def zip_dir(dir_to_zip):
for root, dirs, files in os.walk(dir_to_zip):
for curr_file in files:
fpath = os.path.join(root, curr_file)
zip_file(fpath, "{}.zip".format(fpath),root)
Это создаст архив для каждого файла в его каталоге. Архив будет содержать только сам файл, а не полный путь к файлу.
import os, zipfile
def zip_file(filepath, zipfilepath ,curr_file):
with zipfile.ZipFile(zipfilepath, 'w', zipfile.ZIP_DEFLATED) as ziph:
ziph.write(filepath, arcname=curr_file)
def zip_dir(dir_to_zip):
for root, dirs, files in os.walk(dir_to_zip):
for curr_file in files:
if not curr_file.endswith('.zip'):
filepath = os.path.join(root, curr_file)
zipfilepath = "{}.zip".format(filepath)
zip_file(filepath, zipfilepath, curr_file)