python exe文件进度条_python 下载文件,带进度条

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import requests

import os

import time

import sys

'''

下载视频文件

'''

class DownloadSegmentfault():

'''

初始化类文件

'''

def __init__(self,api_video_url):

self.api_video_url = api_video_url

self.headers = {

"user-agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

}

'''

执行下载

'''

def download(self):

start = time.time()

#下载文件名

# print(os.path.split(self.api_video_url))

# print(os.path.basename(self.api_video_url))

#获取文件名 e6a59548da20bcf3.mp4?sign=05e6532286c697b10dbcac6761dcac83&t=5bee2e2d

basename = os.path.basename(self.api_video_url)

#获取?号的位置

# pos = basename.find('?')

#获取文件名

# file_name = basename[0:pos]

# print('='*30 +'正在下载:'+file_name + '='*30)

file_name = os.getcwd() + '/' + basename

# print(file_name)

temp_size = 0 #已经下载文件大小

res = requests.get(self.api_video_url, headers=self.headers)

chunk_size = 1024 #每次下载数据大小

total_size = int(res.headers.get("Content-Length"))

if res.status_code ==200:

print('[文件大小]:%0.2f MB' %(total_size / chunk_size /1024)) #换算单位并打印

#保存下载文件

with open(file_name, 'wb') as f:

for chunk in res.iter_content(chunk_size=chunk_size):

if chunk:

temp_size += len(chunk)

f.write(chunk)

f.flush()

#############花哨的下载进度部分###############

done = int(50 * temp_size / total_size)

# 调用标准输出刷新命令行,看到\r 回车符了吧

# 相当于把每一行重新刷新一遍

sys.stdout.write("\r[%s%s] %d%%" % ('█' * done, ' ' * (50 - done), 100 * temp_size / total_size))

sys.stdout.flush()

print() # 避免上面\r 回车符,执行完后需要换行了,不然都在一行显示

end = time.time() #结束时间

print('全部下载完成!用时%.2f 秒' %(end-start))

else:

print(res.status_code)

if __name__ == "__main__":

api_video_url = "http://online.cdn.qianqian.com/qianqian/info/5012ec935d74a6fb03015d04585dd353.exe"

segmentfault = DownloadSegmentfault(api_video_url)

segmentfault.download()

/www/env/py3env/bin/python /home/alex/learn/day01/huxiu/huxiu/spiders/download.py

[文件大小]:15.03 MB

[██████████████████████████████████████████████████] 100%

全部下载完成!用时 2.19 秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值