Python之下载文件

自动化测试过程中发现避免不了需要手动操作的部分,如手动下载最新的APK文件进行smoke测试,而往往新的版本是在夜间进行的,等到早上上班后再进行下载进行smoke测试的话时间就浪费了,因此需要有个脚本自动检测是否有新版本,并自动下载进行smoke测试。可使用requests方法实现下载:

# -*- coding:utf-8 -*-
import requests
import os
from requests.auth import HTTPBasicAuth
import time
from sys import argv
from time import sleep


url = "http://xxxxx.com" \
      "version.txt"
base_download_url = "http://xxxxx.com/new.apk"
user_Agent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 " \
             "Safari/537.36 "
header1 = {
    "Referer": url,
    "User-Agent": user_Agent

}
header2 = {
    "Referer": base_download_url,
    "User-Agent": user_Agent

}

serial_no = argv[1]
user = argv[2]
password = argv[3]

# 获取当前版本号
version = os.popen("adb -s " + serial_no + " shell pm dump com.mediatek.wwtv.tvcenter | findstr versionName")
current_version_full = version.read().rsplit("\n")[0].rsplit("=")[1]
current_version = current_version_full.rsplit(".")[2]

print ("Current version: " + current_version_full)
local = os.getcwd()
status = True
# requests.adapters.DEFAULT_RETRIES = 5
# s = requests.session()
# s.keep_alive = False
while status:

    response_version = requests.get(url, headers=header1, auth=HTTPBasicAuth(user, password))
    response_apk = requests.get(base_download_url, headers=header2, auth=HTTPBasicAuth(user, password))

    filename = os.path.basename(url)
    apk = os.path.basename(base_download_url)
    # 下载 Litv_apk_LiveTV.txt,以便检查最新版本
    with open(filename, "wb") as txt:
        txt.write(response_version.content)
    version_file = open(local + "/version.txt", "r")
    lines = version_file.readlines()

    for line in lines:
        # 检查是否有新版本
        if line.find("current_version") != -1:
            new_version_full = line.rsplit(" = ")[1].replace('"', '').replace('\n', '')
            new_version = line.replace('"', '').rsplit(".")[2]

            new_version = int(new_version)
            print ("Checking New Version......")
            if new_version > int(current_version):

                apk_size = int(response_apk.headers["content-length"])

                print ("New version found: %s,start downloading......" % new_version_full)
                with open(apk, "wb") as apk:
                    apk.write(response_apk.content)
                    down_size = os.path.getsize(local + "/xxx.apk")

                    progress = str(down_size * 100 / apk_size)
                    print (progress + "% completed")
   				print ("100% completed,start install xxx.apk")
                os.system("adb -s " + serial_no + " install xxx.apk")
                status = False

            else:
                print ("The version of xxx is up to date, check later please.......\n")
                sleep(60*60)
print ("====================xxx smoke test start=====================")

此代码是从jenkins中检测新版本并下载,其中apk的版本信息放置在version.txt中:current_version = “x.x.x”
apk 下载过程中未限制字节流,不能直观体现下载进度
在这里插入图片描述

且下载较大的文件会出现下载不完整的情况,此时需要进行字节流限制(每次下载的大小)


chunk_size = 1024000# 每次下载1M
with open(apk, "wb") as apk:
    for chunk in response_apk.iter_content(chunk_size=chunk_size):
        if chunk:
            apk.write(chunk)
            down_size = os.path.getsize(local + "/xxx.apk")
            progress = str(down_size*100/apk_size)
            print (progress + "% completed")

结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python是一种高级编程语言,可以使用它来下载微信文件。首先,您需要安装微信开发者工具包,并使用Python调用相关的API接口,以便访问和下载微信文件。您可以通过以下步骤来实现下载微信文件的功能。 首先,您需要创建一个微信开发者账户,并将此账户与微信小程序进行绑定。这样,您就可以使用微信提供的API接口来访问和管理小程序中的文件。 其次,您需要使用Python代码访问此API接口。您可以使用requests库中的相关方法来进行访问和下载文件。 在下载文件之前,您需要获取文件的信息,包括文件名、文件类型、文件大小等信息。这些信息可以在API接口返回的json字符串中获取到,您可以使用Python的json库将其转换为Python对象。 接下来,您需要根据文件的url地址,下载文件到本地。您可以使用Python的requests库中的相关方法进行文件下载,并将文件保存到本地文件夹中。 下载完成后,您可以对下载文件进行处理,根据需要进行文件内容解析和处理。您可以使用Python的相关库,例如Pillow库用于图片处理,或者Python内置的zipfile库用于解压缩压缩文件等。 总之,Python具有丰富的第三方库和高效的编程语言特性,可以用于下载微信文件。通过API接口访问并下载文件,再使用Python库进行相关处理,将大大提高开发效率和体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值