2013-10-20 22 views
8

Burada bulunan kodu kullanarak sıkıştırılmış klasör ayıklamak çalışıyorum.Python zipfile.extract() tüm dosyaları ayıklamıyor

def unzip(source_filename, dest_dir): 
with zipfile.ZipFile(source_filename) as zf: 

    for member in zf.infolist(): 
     words = member.filename.split('/') 
     path = dest_dir 
     for word in words[:-1]: 
      drive, word = os.path.splitdrive(word) 
      head, word = os.path.split(word) 
      if word in (os.curdir, os.pardir, ''): continue 
      path = os.path.join(path, word) 
     zf.extract(member, path) 

Ama mesela, çekmeye çalışırken, dizin yapısı
wordpress/
-wp-content/
--- somefile.php
-wp-config.php
ile wordpress.zip -index.php
Dosyaları yalnızca bu klasördeki kök dizini veya wordpress/klasöründe alıyorum. Bu yüzden wordpress/wp-content/somefile.php dosyası olsun, wordpress/klasörün kendisinde değil.

cevap

14

ilk bakılacak yer the documentation geçerli:

def unzip(source_filename, dest_dir): 
    with zipfile.ZipFile(source_filename) as zf: 
     zf.extractall(dest_dir) 
+0

Bu çalışır, ancak ben yol geçişi korumalarını kaybeder: kendi durumunuza göre uygulanıyor

ZipFile.extractall([path[, members[, pwd]]]) 

, ben çalışacaktı. Teşekkürler. –

+1

Koruma, 2.7.4 ve sonrasında var gibi görünüyor. –

İlgili konular