Найти - Пользователи
Полная версия: Zip
Начало » Python для новичков » Zip
1 2
OzMod
PEHDOM
Привет , почти а можно что бы папка ( Новая папка ) была в нутри ?
pyuser
 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)
PEHDOM
OzMod
Привет , почти а можно что бы папка ( Новая папка ) была в нутри ?
можно, можно чтобы внутри было все что угодно, за это овечает второй аргумент метода .write
у метода .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()
пример для наглядности, вы можете уже красиво все сделать, причесать где надо.
OzMod
PEHDOM
Спасибо тебе огромное… жалко нельзя больше одного + ставить !!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB