如何使python脚本等到下载完成

时间:2017-11-25 19:22:49

标签: python download zipfile sequential shutil

我的脚本下载一个zip文件,将相关部分替换为文件和文件夹等。它曾经完美地工作,由于某种原因它现在决定停止工作并且只部分下载zipfile,当然,因为zipfile是不完整我收到错误,说下载的文件不是zipfile。我的脚本如下。

def downloadupdate():
    xbmcgui.Dialog().ok(
        "[B][COLOR white]Daily Updater[/B][/COLOR]",
        "Favourites and some software will now update",
        "Elements of your system will be cleaned",
        "Daily Update will take at most 2 minutes")
    #ONLY HAVE THE SUPER FAVOURITES FOLDER IN THE ZIPFILE!!
    url = 'http://x.com/x/x/Super Favourites.zip'
    destination = xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super Favourites.zip')
    favzip = urllib.urlopen(url)
    xbmc.executebuiltin("Notification(Downloading new updates, PLEASE WAIT,()")
    with open(xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super Favourites.zip'), "wb") as zipFile:
        zipFile.write(favzip.read())
    xbmc.executebuiltin("Notification(Download Complete, Please wait,()")
    time.sleep(5)
    xbmc.executebuiltin("Notification(Updating Click and Play channels, Please wait,()")
    updatezip = xbmc.translatePath('special://home/userdata/addon_data/iupdatefix/Super Favourites.zip')
    extractupdate = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.super.favourites/')
    oldfav = xbmc.translatePath('special://home/userdata/addon_data/plugin.program.super.favourites/Super Favourites')
    yeszip = os.path.exists(updatezip)
    time.sleep(5)
    if yeszip:
        xbmc.executebuiltin("Notification(Removing previous, Please wait,()")
        shutil.rmtree(oldfav, ignore_errors=False)
        xbmc.executebuiltin("Notification(Updating, now,()")
        gh = open(updatezip, 'rb')
        zp = zipfile.ZipFile(gh)
        zp.extractall(extractupdate)
        gh.close()
        time.sleep(3)
        xbmc.executebuiltin("Notification(updated, Now Checking sd,()")
        # put this command at the end of whole script --->>>os.remove(updatezip)
    else:
        xbmc.executebuiltin("Notification(Update file Corrupt, Please try again,()")

1 个答案:

答案 0 :(得分:0)

问题已经解决,这不是代码。这是托管服务,我不得不重置服务器上的文件权限,然后再次完美地工作。