2017-05-31 2 views
1

Ich habe den folgenden Code:Extrahieren von Zip Überschreiben standardmäßig?

pz = open(packagezip, 'rb') 

packz = zipfile.ZipFile(pz) 
for name in packz.namelist(): 
    packz.extract(name, package_ext_loc) 

pz.close() 

Wenn die Dateien aus (packagezip) zu extrahieren, in dem Zielort (package_ext_loc) mit dem gleichen Namen einen Ordner auftritt, wird diese Funktion der Ordner und Dateien, da dies automatisch überschreibt IST was ich will, wenn nicht, gibt es ein einfaches zusätzliches Skript, um dies zu erzwingen.

bearbeiten durch einige Websites Ich glaube, die ZIPfile.extractall überschreibt, ob Zielordner bereits existiert. Wie könnte ich extracall in diesem Beispiel verwenden.

Antwort

1

Ich habe Ihren Code getestet und es funktioniert gut. Das bedeutet, dass jedes Mal, wenn ich den Code ausführe, die gleiche Datei im Ordner überschrieben wird.

1

Ich habe eine Runde über Art und Weise zu machen, dass gegangen, dass, wenn es doppelte Ordner, die sie wie diese,

packagezip = xbmc.translatePath ("Sonder entfernt werden: //home/userdata/addon_data/plugin.program .super.favourites/Superfavoriten/Maintenance/packages/packages.zip ') userdatapackagezip = xbmc.translatePath (' special: //home/userdata/addon_data/plugin.program.super.favourites/Super Favoriten/Maintenance/packages/addondata.zip ') package_ext_loc = xbmc.translatePath (' spezial: // home/addons/') addondata_ext_loc = xbmc.translatePath (' spezial: // home/userdata/addon_data/') japackage = os.path. existiert (packagezip) yesaddondata = os.path.exists (userdatapackagezip)

if yespackage: 
    xbmc.executebuiltin("Notification(New Packages available, Extracting,()") 
    pz = open(packagezip, 'rb') 
    packz = zipfile.ZipFile(pz) 
    for name in packz.namelist(): 
     addonpath = xbmc.translatePath('special://home/addons/' + name) 
     addonpathexists = os.path.exists(addonpath) 
     if addonpathexists: 
      xbmc.executebuiltin("Notification(Previous version exists, removing,()") 
      shutil.rmtree(addonpath, ignore_errors=False) 
      xbmc.executebuiltin("Notification(Please wait, preparing extraction,()") 
      time.sleep(3) 
      packz.extract(name, package_ext_loc) 
      xbmc.executebuiltin("Notification(Extracted, REBOOT REQUIRED,()") 
     else: 
      xbmc.executebuiltin("Notification(No previous version, Extracting,()") 
      packz.extract(name, package_ext_loc) 
      xbmc.executebuiltin("Notification(Extracted, REBOOT REQUIRED,()") 
    pz.close() 
    xbmc.executebuiltin("Notification(Packages Extracted, checking addondata,()") 

    if yesaddondata: 
     xbmc.executebuiltin("Notification(Extracting addondata, Please wait!,()") 
     adz = open(userdatapackagezip, 'rb') 
     paddz = zipfile.ZipFile(adz) 
     for name in paddz.namelist(): 
      addondatapath = xbmc.translatePath('special://home/userdata/addon_data/' + name) 
      addondataexists = os.path.exists(addondatapath) 
      if addondataexists: 
       xbmc.executebuiltin("Notification(Previous data folder esists, now removing,()") 
       shutil.rmtree(addondatapath, ignore_errors=False) 
       xbmc.executebuiltin("Notification(Please wait, preparing extraction,()") 
       time.sleep(3) 
       paddz.extract(name, addondata_ext_loc) 
       xbmc.executebuiltin("Notification(Extracted, maybe needs Reeboot,()") 
      else: 
       xbmc.executebuiltin("Notification(No previous version, Extracting,()") 
       paddz.extract(name, addondata_ext_loc) 
     adz.close() 
    else: 
     xbmc.executebuiltin("Notification(No addondata, at this time,()") 

else: 
    xbmc.executebuiltin("Notification(No packages, at this time,()") 
    xbmc.executebuiltin("Notification(Checking addondata, for extraction,()") 
    if yesaddondata: 
     xbmc.executebuiltin("Notification(Extracting addondata, Please wait!,()") 
     adz = open(userdatapackagezip, 'rb') 
     paddz = zipfile.ZipFile(adz) 
     for name in paddz.namelist(): 
      addondatapath = xbmc.translatePath('special://home/userdata/addon_data/' + name) 
      addondataexists = os.path.exists(addondatapath) 
      if addondataexists: 
       xbmc.executebuiltin("Notification(Previous data folder esists, now removing,()") 
       shutil.rmtree(addondatapath, ignore_errors=False) 
       xbmc.executebuiltin("Notification(Please wait, preparing extraction,()") 
       time.sleep(3) 
       paddz.extract(name, addondata_ext_loc) 
       xbmc.executebuiltin("Notification(Extracted, maybe needs Reeboot,()") 
      else: 
       xbmc.executebuiltin("Notification(No previous version, Extracting,()") 
       paddz.extract(name, addondata_ext_loc) 
     adz.close() 
    else: 
     xbmc.executebuiltin("Notification(No addondata, at this time,()") 

Ich war nicht sicher, ob zipfile überschreiben würde automatisch Diese kode ist für eine kodi Wartung addon

Verwandte Themen