2012-05-07 42 views
5

Tôi cần nén một thư mục chứa một tệp .xml và tệp .fgdb bằng cách sử dụng python. Có ai giúp tôi không? Tôi đã thử một vài tập lệnh mà tôi tìm thấy trên internet nhưng luôn có một số vấn đề kỹ thuật (chẳng hạn như tạo tệp zip trống hoặc tạo tệp zip tôi không thể mở 'không được phép', v.v.)Thư mục ZIP có thư mục con trong python

Cảm ơn bạn trước.

Trả lời

6

Chìa khóa để làm cho nó hoạt động là hàm os.walk(). Đây là một kịch bản tôi đã lắp ráp trong quá khứ mà nên làm việc. Hãy cho tôi biết nếu bạn nhận được bất kỳ ngoại lệ nào.

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

Ok. Giúp tôi một cái gì đó trước. Trong trường hợp đó target_dir và tên người dùng là gì? Chỉ cần cho tôi ví dụ, xin vui lòng, để chắc chắn. vì tôi đã thử mã của bạn, nó chạy mà không có ngoại lệ nhưng cũng không tạo zip? – Z77

+0

Xin chào Z77, tôi đã chỉnh sửa mã để làm cho nó cụ thể hơn cho vấn đề của bạn, vui lòng kiểm tra tập lệnh mới. tên đăng nhập là tên thư mục bạn muốn cung cấp cho tệp .zip mới và target_dir là thư mục đích bạn muốn nén. Chỉ cần đặt kịch bản trong thư mục chứa thư mục bạn muốn nén, thay đổi các biến trong hàm gọi và nó sẽ hoạt động. –

+0

Tnx cho bạn những nỗ lực, nhưng vẫn không có gì, không có tệp zip được tạo ra?!: ( – Z77

Các vấn đề liên quan