python下载文件加上日期_Python 给下载文件显示进度条和下载时间的实现

大家在下载文件时能够显示下载进度和时间非常好,其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了。

该模块调用了三个库:1.os 2.requests 3.time

话不多说,先上代码!!!.# 进度条模块

def progressbar(url,path):

if not os.path.exists(path): # 看是否有该文件夹,没有则创建文件夹

os.mkdir(path)

start = time.time() #下载开始时间

response = requests.get(url, stream=True) #stream=True必须写上

size = 0 #初始化已下载大小

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

content_size = int(response.headers['content-length']) # 下载文件总大小

try:

if response.status_code == 200: #判断是否响应成功

print('Start download,[File size]:{size:.2f} MB'.format(size = content_size / chunk_size /1024)) #开始下载,显示下载文件大小

filepath = path+'\name.extension name' #设置图片name,注:必须加上扩展名

with open(filepath,'wb') as file: #显示进度条

for data in response.iter_content(chunk_size = chunk_size):

file.write(data)

size +=len(data)

print('\r'+'[下载进度]:%s%.2f%%' % (' '*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ')

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

print('Download completed!,times: %.2f秒' % (end - start)) #输出下载用时时间

except:

实现原理其实很简单,我们一般下载东西使用的requests.get(url).content的方法下载来的文件是二进制文件,我们只要通过for循环每次下载1024kb,到最后获取文件的总大小,即可完成我们的功能实现了!.

通过上面这个函数我们就实现了简单的进度条以及所需时间的功能,我们用了两个参数,我们下载个皮卡丘图片来试试效果:

效果还不错~~注:[下载进度]后面的‘ ‘是有动态显示的,这里可能看不到,可以在自己的环境下测试看看!!

实例代码:import os

import requests

import time

# 进度条模块

def progressbar(url,path):

if not os.path.exists(path): # 看是否有该文件夹,没有则创建文件夹

os.mkdir(path)

start = time.time() #下载开始时间

response = requests.get(url, stream=True)

size = 0 #初始化已下载大小

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

content_size = int(response.headers['content-length']) # 下载文件总大小

try:

if response.status_code == 200: #判断是否响应成功

print('Start download,[File size]:{size:.2f} MB'.format(size = content_size / chunk_size /1024)) #开始下载,显示下载文件大小

filepath = path+'\Pikachu.jpg' #设置图片name,注:必须加上扩展名

with open(filepath,'wb') as file: #显示进度条

for data in response.iter_content(chunk_size = chunk_size):

file.write(data)

size +=len(data)

print('\r'+'[下载进度]:%s%.2f%%' % (' '*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ')

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

print('Download completed!,times: %.2f秒' % (end - start)) #输出下载用时时间

except:

print('Error!')

def main():

#下载皮卡丘图片

url = 'https://img.moegirl.org/common/thumb/e/ed/%E7%9A%AE%E5%8D%A1%E4%B8%98%E4%B9%8B%E6%AD%8C.jpg/1200px-%E7%9A%AE%E5%8D%A1%E4%B8%98%E4%B9%8B%E6%AD%8C.jpg'

path = r'E:3' # 设置下载到本地的地址

progressbar(url,path)

if __name__ == '__main__':

main()

总结

到此这篇关于Python 给下载文件显示进度条和下载时间的文章就介绍到这了,更多相关python下载文件进度条下载时间内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 Python 文件上传并返回进度,可以使用 Python 的 socket 模块和 tqdm 库。 下面是一个基本的上传文件的示例代码: ```python import socket import os from tqdm import tqdm # 客户端连接信息 host = '127.0.0.1' port = 9999 # 创建 socket 对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 client_socket.connect((host, port)) # 要上传的文件路径 file_path = '/path/to/file' # 获取文件大小 file_size = os.path.getsize(file_path) # 发送文件名和大小 file_name = os.path.basename(file_path) client_socket.send(f"{file_name} {file_size}".encode()) # 打开文件并发送数据 with open(file_path, 'rb') as f: # 使用 tqdm 显示上传进度 progress_bar = tqdm(total=file_size, unit='B', unit_scale=True) while True: # 读取数据 data = f.read(1024) if not data: break # 发送数据 client_socket.send(data) # 更新进度条 progress_bar.update(len(data)) # 关闭连接 client_socket.close() ``` 在服务器端,可以使用类似的代码来接收上传的文件显示进度: ```python import socket from tqdm import tqdm # 服务器信息 host = '127.0.0.1' port = 9999 # 创建 socket 对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 server_socket.bind((host, port)) # 监听客户端连接 server_socket.listen(1) # 接收客户端连接 client_socket, client_address = server_socket.accept() # 接收文件名和大小 file_info = client_socket.recv(1024).decode().split() file_name, file_size = file_info[0], int(file_info[1]) # 创建文件并接收数据 with open(file_name, 'wb') as f: # 使用 tqdm 显示下载进度 progress_bar = tqdm(total=file_size, unit='B', unit_scale=True) while True: # 接收数据 data = client_socket.recv(1024) if not data: break # 写入文件 f.write(data) # 更新进度条 progress_bar.update(len(data)) # 关闭连接 client_socket.close() server_socket.close() ``` 注意,这里的进度条是使用 tqdm 库实现的。需要使用 pip 安装 tqdm 库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值