zipfile.ZipFile只提取一个文件夹

时间:2016-02-15 10:35:23

标签: python module zipfile shutil

我有这段代码

def downloadupdate():
    url = 'http://myurl.com/o/test/list.zip'
    destination = xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super.zip')
    urllib.urlretrieve(url,destination)
    time.sleep(40)

    updatezip = xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super.zip')
    extractupdate = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.test/')
    oldfav = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.test/test')
    yeszip = os.path.exists(updatezip)
    shutil.rmtree(oldfav, ignore_errors=False)
    time.sleep(10)
    if yeszip:
        gh = open(updatezip, 'rb')
        zp = zipfile.ZipFile(gh)
        for name in zp.namelist():
            zp.extract(name, extractupdate)
            gh.close()
            time.sleep(3)
    else:
        xbmc.executebuiltin("Notification(some text, sometext,()")

downloadupdate()

zip文件正确下载 zip文件保存在正确的位置 删除正确 在super.zip里面有12个目录,如果这12个目录是test.txt文件 当我提取Super.zip时,它只提取十二个目录中的一个,并且提取的目录为空。可能是我需要以某种方式停止或关闭shutil进程?并且作为它的提取,它被shutil同时擦除了? 请问有人请说明我的错。三江源

1 个答案:

答案 0 :(得分:0)

好的,所以它现在正在工作谢谢大卫一个GIRISH

def downloadupdate():
    url = 'http://myurl.com/o/test/list.zip'
    destination = xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super.zip')
    urllib.urlretrieve(url,destination)
    time.sleep(40)

    updatezip = xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super.zip')
    extractupdate = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.test/')
    oldfav = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.test/test')
    yeszip = os.path.exists(updatezip)
    shutil.rmtree(oldfav, ignore_errors=False)
    time.sleep(10)
    if yeszip:
        gh = open(updatezip, 'rb')
        zp = zipfile.ZipFile(gh)
        zp.extractall(extractupdate)
        gh.close()
        time.sleep(3)
    else:
        xbmc.executebuiltin("Notification(some text, sometext,()")

downloadupdate()