Python 默认情况下提取zip覆盖?

Python 默认情况下提取zip覆盖?,python,zipfile,Python,Zipfile,我有以下代码: pz = open(packagezip, 'rb') packz = zipfile.ZipFile(pz) for name in packz.namelist(): packz.extract(name, package_ext_loc) pz.close() 如果要从中提取的文件(packagezip)在目标位置(package_ext_loc)遇到同名文件夹,此函数是否会自动覆盖文件夹和文件,因为这是我想要的,如果不是,是否有一个简单的附加脚本来强制执行此

我有以下代码:

pz = open(packagezip, 'rb')

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

pz.close()
如果要从中提取的文件(packagezip)在目标位置(package_ext_loc)遇到同名文件夹,此函数是否会自动覆盖文件夹和文件,因为这是我想要的,如果不是,是否有一个简单的附加脚本来强制执行此操作


在浏览了一些网站之后,我相信如果目标文件夹已经存在,zipfile.extractall会被覆盖。在本例中,我如何使用extractall。

我已经测试了您的代码,它运行良好。这意味着每次我运行代码时,它都会覆盖文件夹中相同的现有文件。

我已经绕了一圈,确保如果有重复的文件夹,它们会像这样被删除

packagezip = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.super.favourites/Super Favourites/Maintenance/packages/packages.zip')
userdatapackagezip = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.super.favourites/Super Favourites/Maintenance/packages/addondata.zip')

package_ext_loc = xbmc.translatePath('special://home/addons/')
addondata_ext_loc = xbmc.translatePath('special://home/userdata/addon_data/')
yespackage = os.path.exists(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,()")
我不确定zipfile是否会自动覆盖
此kode用于kodi维护插件

,因此您编写了代码,但没有运行代码来验证行为。相反,您选择让这里的人运行您的代码。对吗?