2012-05-07 2 views
5

Мне нужно застегнуть папку, содержащую файл .xml и файл .fgdb с помощью python. Может ли кто-нибудь мне помочь? Я попробовал несколько скриптов, которые я нашел в Интернете, но всегда есть какая-то техническая проблема (например, создание пустого zip-файла или создание zip-файла, я не могу открыть «без разрешения» и т. Д.)ZIP-папка с подпапкой в ​​python

Заранее спасибо.

ответ

6

Ключом к его созданию является функция os.walk(). Вот сценарий, который я собрал в прошлом, который должен работать. Дайте мне знать, если вы получите какие-то исключения.

import zipfile 
import os 
import sys 

def zipfolder(foldername, target_dir):    
    zipobj = zipfile.ZipFile(foldername + '.zip', 'w', zipfile.ZIP_DEFLATED) 
    rootlen = len(target_dir) + 1 
    for base, dirs, files in os.walk(target_dir): 
     for file in files: 
      fn = os.path.join(base, file) 
      zipobj.write(fn, fn[rootlen:]) 

zipfolder('thenameofthezipfile', 'thedirectorytobezipped') #insert your variables here 
sys.exit() 
+0

ОК. Сначала помогите мне. Что в этом случае target_dir и что такое имя папки? Просто дайте мне пример, пожалуйста, чтобы быть уверенным. потому что я пробовал ваш код, он работает без исключений, но также без создания zip ?! – Z77

+0

Привет, Z77, я редактировал код, чтобы сделать его более конкретным для вашей проблемы, пожалуйста, проверьте новый скрипт. имя папки - это имя папки, которую вы хотите передать новому .zip-файлу, а target_dir - целевая папка, которую вы хотите заархивировать. Просто поместите скрипт в папку, содержащую папку, которую вы хотите заархивировать, измените переменные в вызове функции, и она будет работать. –

+0

Tnx для ваших усилий, но все равно ничего, никакого созданного zip-файла?! :( – Z77

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