linux ftp显示进度条,在Python中显示FTP下载进度(ProgressBar)
我使用以下Python脚本通过FTP下载文件.我想要的是在下载时查看进度的详细信息.为此,我使用了ProgressBar但它没有显示任何内容.
这是我的代码:
import re
import os
import ftplib
import ntpath
import sys
import time
from progressbar import AnimatedMarker, Bar, BouncingBar, Counter, ETA, \
AdaptiveETA, FileTransferSpeed, FormatLabel, Percentage, \
ProgressBar, ReverseBar, RotatingMarker, \
SimpleProgress, Timer, UnknownLength
ftp = ftplib.FTP("Your IP address")
ftp.login("Username", "password")
files = []
try:
ftp.cwd("/feed_1")
files = ftp.nlst()
for fname in files:
res = re.findall("2018-07-25", fname)
if res:
print 'Opening local file ' + ntpath.basename(fname)
file = open(ntpath.basename(fname), 'wb')
print 'Getting ' + ntpath.basename(fname)
try:
widgets = ['Downloading: ', Percentage(), ' ',
Bar(marker='#',left='[',right=']'),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=500)
pbar.start()
ftp.retrbinary('RETR ' + ntpath.basename(fname), file.write)
except:
pass
print 'Closing file ' + ntpath.basename(fname)
file.close()
print (fname)
time.sleep(0.2)
pbar.update()
pbar.finish()
if not res:
continue
except ftplib.error_perm , resp:
if str(resp) == "550 No files found":
print "No files in this directory"
pass
else:
raise
请帮助理解这里的实际错误.谢谢 :)
解决方法:
您永远不会更新ProgressBar.你需要做的是:
>实现一个函数(或类方法),您将传递给FTP.retrbinary作为回调而不是file.write.该函数应该执行file.write并更新进度条.
>您还需要知道ProgressBar的maxval参数的文件/传输大小.为此你可以使用FTP.size.
一个简单的实现就像:
local_path = "archive.zip"
remote_path = "/remote/path/archive.zip"
file = open(local_path, 'wb')
size = ftp.size(remote_path)
pbar = ProgressBar(widgets = widgets, maxval = size)
pbar.start()
def file_write(data):
file.write(data)
global pbar
pbar += len(data)
ftp.retrbinary("RETR " + remote_path, file_write)
现在你得到了你想要的进度条:
Downloading: 72% [############################### ] ETA: 0:00:00 242.1 MiB/s
标签:python,download,ftp,ftplib,progress-bar
来源: https://codeday.me/bug/20191001/1839874.html
linux ftp显示进度条,在Python中显示FTP下载进度(ProgressBar)相关推荐
- python写界面进度条程序_Python中如何写控制台进度条的整理
进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输 ...
- vue实现进度条隐藏_Vue 中使用 NProgress 实现进度条
简介:NProgress 是浏览器加载时,出现在浏览器顶部的进度条. 文章目录: 一.NProgress 安装 二.NProgress 使用 三.NProgress 配置 四.Vue 中修改进度条颜色 ...
- 炫酷进度条:Android 仿应用宝下载进度条
2016-09-29 FlowLeaf 鸿洋 鸿洋 鸿洋 微信号 hongyangAndroid 功能介绍 你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识.点击历史消息,查看所 ...
- python输出进度条 tqdm_Tqdm Python实现进度条,tqdmpython
python实现进度条-查看代码运行进度 一.前言 \quad \quad 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我 ...
- WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt
主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...
- Android中下载进度条格式,Android开发如何实现文件下载进度条
释放双眼,带上耳机,听听看~! 今天和小编狗在这里学习下载进度的实现吧,这段代码是网上找的,自己做了些小改,通过模拟器测试.文件下载进度条控制(就是为了高清壁纸加个进度条),自己研究了好久,但是进度条 ...
- python opencv 内存泄露_解决python中显示图片的plt.imshow plt.show()内存泄漏问题
当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matp ...
- python plt.show_解决python中显示图片的plt.imshow plt.show()内存泄漏问题
当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matp ...
- 如何在Python中显示图片?
如何在Python中显示图片? 相信很多程序员都曾经因为要在Python中显示图片而苦恼过,毕竟图像处理是数据分析和人工智能领域中的重要一环.所以,今天我们就来介绍一下Python中显示图片的方法. ...
最新文章
- 逻辑回归算法原理简介
- 【转】Eclipse的Debug调试技巧大全
- POSIX多线程编程-条件变量pthread_cond_t
- asp获取屏幕分辨率
- 虚拟的云服务器需要重启吗,虚拟主机重启服务器吗
- TPU和GPU跑模型时间统计(持续更新中)以及TPU Research Cloud的申请
- linux raw设备格式化,SUSE Linux 10配置裸设备(raw devices)
- ECshop安装及报错解决方案总结
- javascript 西瓜一期 01.什么是编程 什么是编程语言
- java textbox换行符_TextBox中的空格与换行问题
- [MyBatis日记](3)映射器配置文件与映射器接口
- VM14安装及使用环境配置
- 2021-07-30-DJ-006 Django模型的objects方法、参数详解
- RDP Wrapper
- 自动驾驶汽车传感器融合系统及多传感器数据融合算法浅析
- JAVA实现排列组合
- android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
- 用canvas画一个太极图(八卦图)
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统
- 树的结点数+蒲丰投针概率