2016-06-21 14 views

Antwort

1

ein members-extractall() gefiltert Pass. archive.extractall(members=(member for member in archive.namelist() if not member.endswith('.tif'))).

1

Es ist eine Weile her, seit ich diese Routine verwendet habe, also musste ich es ausgraben. Vielleicht möchten Sie Ihre spezifischen Bedürfnisse testen/anpassen.

Die Anweisung if prüft nur die letzten drei Zeichen des zu extrahierenden Dateinamens. Sie können dies mit einem .split('.') ändern, um nach der vollständigen Erweiterung zu suchen, da viele Dateien jetzt mehr als 3 Zeichen für die Erweiterung haben.

Dies wurde für Windows geschrieben, und Sie können, wenn läuft auf anderen OSs

Dieser Code bestimmte Bits geändert werden soll, um die Ordnerstruktur zu bewahren, aber wahrscheinlich nicht die schnellste Routine (obwohl ich nie irgendwelche Beschwerden gehabt:

import zipfile 


def unzip_file(zippedfile = '', targetdir = '', exclude_ext = ''): 

    if zippedfile == '': ## this is the .zip file 
     return 
    if targetdir == '': 
     targetdir = os.path.join(os.path.dirname(zippedfile), os.path.basename(zippedfile)[:-4])  
    if not os.path.exists (targetdir): 
     os.makedirs (targetdir) 

    zfile = zipfile.ZipFile(zippedfile) 

    for name in zfile.namelist(): 
     (dirName, fileName) = os.path.split(name) 
     if not dirName == '': 
      if not os.path.exists (os.path.join(targetdir, dirName)): 
       os.makedirs (os.path.join(targetdir, dirName)) 
     if fileName == '': 
      # directory 
      newDir = os.path.join(targetdir, dirName) 
      if not os.path.exists(newDir): 
       os.makedirs (newDir) 
     else: 
      # file 
      if exclude_ext == '': 
       print ('Extracting File : ' + name) 
       fd = open(os.path.join(targetdir, name), 'wb') 
       fd.write(zfile.read(name)) 
       fd.close() 
      else: 
       if not exclude_ext == name[-3:]: 
        print ('Extracting File : ' + name) 
        fd = open(os.path.join(targetdir, name), 'wb') 
        fd.write(zfile.read(name)) 
        fd.close()      
       else: 
        print ('File with extension ' + exclude_ext + ' is excluded') 
    zfile.close() 

    return 

Viel Glück