2012-01-19 40 views
10

Làm một cái gì đó như thế này:tệp zip python, làm cách nào để biết một mục là một thư mục?

from zipfile import ZipFile 

#open zip file 
zipfile = ZipFile('Photo.zip') 

#iterate zip contents 
for zipinfo in zipfile.filelist: 
    #do something 
    filepath, filename = path.split(zipinfo.filename) 

làm thế nào để tôi biết nếu zipinfo là một tập tin hoặc một thư mục?

Cảm ơn sự hỗ trợ của bạn.

Trả lời

12

Có lẽ đây là đúng cách:

is_dir = lambda zipinfo: zipinfo.filename.endswith('/') 
+2

Tôi tin rằng dấu tách thư mục luôn được chuẩn hóa thành '/' trong tệp zip, bất kể nền tảng nào được tạo trên đó. –

+0

@Greg: sự nghi ngờ của tôi là nó phụ thuộc vào nền tảng mã zip đã được mở ** nhưng không có hộp Windows để kiểm tra nó. – neurino

+0

Không, không có thay đổi. Dấu phân cách đường dẫn bên trong tệp zip luôn là '/' bất kể nền tảng nào được mở trên đó. –

2

Bắt đầu với Python 3.6 có một phương pháp ZipInfo.is_dir().

with zipfile.ZipFile(zip_file) as archive: 
    for file in archive.namelist(): 
     file_info = archive.getinfo(file) 
     if file_info.is_dir(): 
      # do something 

See the Python 3.6 docs để biết chi tiết.

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