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维护插件,因此您编写了代码,但没有运行代码来验证行为。相反,您选择让这里的人运行您的代码。对吗?