2012-01-19 9 views
10

इस तरह करने से कुछ:पायथन zipfile, मुझे कैसे पता चलेगा कि एक वस्तु एक निर्देशिका है?

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) 

मुझे पता है कि कैसे अगर zipinfo एक फ़ाइल या एक निर्देशिका है?

आपके समर्थन के लिए धन्यवाद।

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

उत्तर

12

शायद यह सही तरीका है।

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 विवरण के लिए।

+2

मेरा मानना ​​है कि निर्देशिका विभाजक हमेशा एक ज़िप फ़ाइल के भीतर '/' के लिए सामान्यीकृत होता है, इससे कोई फर्क नहीं पड़ता कि कौन सा मंच बनाया गया है। –

+0

@ ग्रेग: मेरा संदेह यह था कि यह मंच द्वारा निर्भर था कि ज़िप ** खोला गया ** ** लेकिन इसका परीक्षण करने के लिए कोई विंडोज बॉक्स नहीं है। – neurino

+0

नहीं, कोई बदलाव नहीं है। एक ज़िप फ़ाइल के अंदर पथ विभाजक हमेशा '/' कोई फर्क नहीं पड़ता कि यह किस प्लेटफ़ॉर्म पर खोला गया है। –

2

अजगर 3.6 के साथ शुरू होती है एक ZipInfo.is_dir() विधि:

संबंधित मुद्दे