PEHDOM
Привет , почти а можно что бы папка ( Новая папка ) была в нутри ?
import os from zipfile import ZipFile, ZIP_LZMA def pack_folder(folder, arcname): base = os.path.split(folder)[0] with ZipFile(arcname, "w", ZIP_LZMA) as arc: for root, dirs, files in os.walk(folder): for name in files: name = os.path.join(root, name) arc.write(name, os.path.relpath(name, base)) if "__main__" == __name__: input_dir = r"C:\Python34\OzCompiler\Project\Новая папка" out_file = r"C:\Новая папка.zip" pack_folder(input_dir, out_file)
OzModможно, можно чтобы внутри было все что угодно, за это овечает второй аргумент метода .write
Привет , почти а можно что бы папка ( Новая папка ) была в нутри ?
import os, zipfile input_dir = "C:\\Python34\\OzCompiler\\Project\\Новая папка" out_file = "C:\\Новая папка.zip" yourfolder = os.path.normpath(input_dir) # нормализирум путь, убираем лишние\конечные слеши out_dir = os.path.split(yourfolder)[1] # получаем имя последней папки в пути arch = zipfile.ZipFile(out_file, 'w', zipfile.ZIP_DEFLATED) for root, dirs, files in os.walk(yourfolder): for file_name in files: src_name = os.path.abspath(os.path.join(root, file_name)) # исходный путь arc_name = src_name[len(yourfolder) + 1:] #имя внутри врхива, все что идет после input_dir arc_name = os.path.join(out_dir, arc_name ) # добавляем "последнюю папку" к имени внутри архтва print('zipping {} as {}'.format(src_name, arc_name)) arch.write(src_name, arc_name) # записываем в архив arch.close()