在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ urllib.urlretrieve 方法下載文件不完整,源文件40mb,下載后

urllib.urlretrieve 方法下載文件不完整,源文件40mb,下載后之后100kb。

# coding=utf-8
import subprocess
import urllib
import os
import time
from socket import *


def pid_tomcat():
    child = subprocess.Popen(['pgrep', '-f', "tomcat"], stdout=subprocess.PIPE, shell=False)
    response = child.communicate()[0]
    tomcat = [int(pid) for pid in response.split()]
    return tomcat

def Schedule(a,b,c):
    '''''
    a:已經(jīng)下載的數(shù)據(jù)塊
    b:數(shù)據(jù)塊的大小
    c:遠(yuǎn)程文件的大小
   '''
    per = 100.0 * a * b / c
    if per > 100 :
        per = 100
    print '%.2f%%' % per

if __name__ == "__main__":
    tcpserver = socket(AF_INET, SOCK_STREAM)
    # 本地信息綁定
    tcpserver.bind(("192.168.128.57", 7788))
    # 進(jìn)行監(jiān)聽
    tcpserver.listen(1)
    # 客戶端接受
    while True:
        print ("持續(xù)監(jiān)聽中...")
        newsocket, clientaddr = tcpserver.accept()
        recdata = newsocket.recv(1024)
        recdata = eval(recdata)
        print "接收到的數(shù)據(jù)為:" + str(recdata)
        while True:
            pid = pid_tomcat()
            try:
                tomcat_pid = pid[0]
                os.system("kill -9 " + str(tomcat_pid))
            except:
                break
            print("獲取到的tomcat的pid為" + str(tomcat_pid))

        # 下載新的war包
        war_path = '/opt/Tomcat7_nlu/webapps/'
        for key in recdata:
            url = recdata[key]
            war_name = (url.split("/")[-1]).split("-")[0]
            print("在url地址中切出來的war包名字為:" + str(war_name))
            if ".war" in war_name:
                pass
            else:
                war_name += ".war"
            will_del = war_name.split(".")[0]
            print("在文件中切出來的關(guān)鍵字為:" + str(will_del))
            # 刪除掉舊的war包和文件夾
            os.system("rm -rf /opt/Tomcat7_nlu/webapps/" + will_del + "*")
            # 下載新的war包
            download_path = war_path + war_name
            urllib.urlretrieve(url, download_path, Schedule)
        # 啟動(dòng)tomcat
        os.system("/opt/Tomcat7_nlu/bin/startup.sh")
        time.sleep(250)
        # 操作完成后,給客戶端返回信息,讓客戶端繼續(xù)執(zhí)行
        newsocket.send("server has been restart!!!")
        newsocket.close()
回答
編輯回答
熟稔
2017年7月20日 14:33
編輯回答
舊顏

問題解決了,下載的地址需要登錄,抓包后得到了post需要的數(shù)據(jù)。模擬登陸后,再跳轉(zhuǎn)到下載鏈接就OK了!!

2017年12月7日 00:36