2015-04-28 2 views
0

У меня есть каталог, состоящий из 3-х папок:
----- 001 -----
----- 003Создание отдельных архивов из отдельных папок с ZipFile

I» d хотел бы создать 3 архива с именем 001.zip, 002.zip и 003.zip. Каждый архив должен состоять из содержимого папки.

Я использую ZipFile библиотеку, и мне удалось сделать архив одной папки:

import os, zipfile  
zf = zipfile.ZipFile('C:/zipfile4.zip', mode='w') 
for dirpath,dirs,files in os.walk("C:/Test/002"): 
    for f in files: 
     fn = os.path.join(dirpath, f) 
     zf.write(fn) 

Но я не знаю, как сделать, чтобы создать много архивов подряд, используя эту ZipFile библиотеку.
Не могли бы вы мне помочь?
Спасибо!

+0

Я попробовал фрагмент, который я написал в моем посте. Это хорошо работает, но только для папки. На самом деле я хотел бы адаптировать фрагмент, чтобы сделать один архив в одной папке по циклу. – Julien

+0

Тогда попробуйте сделать цикл с ним и посмотреть, как это происходит. – skyline75489

ответ

1

Использование образца кода в качестве основы, это должно работать:

import os 
import zipfile 

dir = "C:/Test/002" 

# get list of all subdirectories in the directory 
subdirs = [subdir for subdir in os.listdir(dir) if os.path.isdir(os.path.join(dir, subdir))] 

# create a zip archive for each subdirectory 
for subdir in subdirs: 
    zf_name = "C:/" + subdir + ".zip" 
    zf = zipfile.ZipFile(zf_name, mode='w') 
    for dirpath,dirs,files in os.walk(os.path.join(dir, subdir)): 
     for f in files: 
      fn = os.path.join(dirpath, f) 
      zf.write(fn) 
+0

Thaks для вашей помощи. Я пробовал ваш код, и каждый архив был хорошо создан. Но дело в том, что содержимое папок потеряно. Вы знаете, как его решить? – Julien

+0

@Julien Извините, но что вы понимаете, потерянные? Кажется, это отлично работает для меня. – geckon

+0

Я имею в виду, что у меня было много файлов (около 5 Mo) в папках 002, 003 и так далее. И используя скрипт, архивы 002.zip и 003.zip пусты. – Julien

Смежные вопросы