Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2017 21:43:54

OzMod
Зарегистрирован: 2017-01-11
Сообщения: 38
Репутация: +  1  -
Профиль   Отправить e-mail  

Zip

PEHDOM
Привет , почти а можно что бы папка ( Новая папка ) была в нутри ?

Офлайн

#2 Июнь 7, 2017 06:33:10

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Zip

 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)



Офлайн

#3 Июнь 7, 2017 09:26:06

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Zip

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()
пример для наглядности, вы можете уже красиво все сделать, причесать где надо.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 7, 2017 09:53:23)

Офлайн

#4 Июнь 7, 2017 20:58:15

OzMod
Зарегистрирован: 2017-01-11
Сообщения: 38
Репутация: +  1  -
Профиль   Отправить e-mail  

Zip

PEHDOM
Спасибо тебе огромное… жалко нельзя больше одного + ставить !!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version