我使用以下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)相关推荐

  1. python写界面进度条程序_Python中如何写控制台进度条的整理

    进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输 ...

  2. vue实现进度条隐藏_Vue 中使用 NProgress 实现进度条

    简介:NProgress 是浏览器加载时,出现在浏览器顶部的进度条. 文章目录: 一.NProgress 安装 二.NProgress 使用 三.NProgress 配置 四.Vue 中修改进度条颜色 ...

  3. 炫酷进度条:Android 仿应用宝下载进度条

    2016-09-29 FlowLeaf 鸿洋 鸿洋 鸿洋 微信号 hongyangAndroid 功能介绍 你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识.点击历史消息,查看所 ...

  4. python输出进度条 tqdm_Tqdm Python实现进度条,tqdmpython

    python实现进度条-查看代码运行进度 一.前言 \quad \quad 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我 ...

  5. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  6. Android中下载进度条格式,Android开发如何实现文件下载进度条

    释放双眼,带上耳机,听听看~! 今天和小编狗在这里学习下载进度的实现吧,这段代码是网上找的,自己做了些小改,通过模拟器测试.文件下载进度条控制(就是为了高清壁纸加个进度条),自己研究了好久,但是进度条 ...

  7. python opencv 内存泄露_解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matp ...

  8. python plt.show_解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matp ...

  9. 如何在Python中显示图片?

    如何在Python中显示图片? 相信很多程序员都曾经因为要在Python中显示图片而苦恼过,毕竟图像处理是数据分析和人工智能领域中的重要一环.所以,今天我们就来介绍一下Python中显示图片的方法. ...

最新文章

  1. 逻辑回归算法原理简介
  2. 【转】Eclipse的Debug调试技巧大全
  3. POSIX多线程编程-条件变量pthread_cond_t
  4. asp获取屏幕分辨率
  5. 虚拟的云服务器需要重启吗,虚拟主机重启服务器吗
  6. TPU和GPU跑模型时间统计(持续更新中)以及TPU Research Cloud的申请
  7. linux raw设备格式化,SUSE Linux 10配置裸设备(raw devices)
  8. ECshop安装及报错解决方案总结
  9. javascript 西瓜一期 01.什么是编程 什么是编程语言
  10. java textbox换行符_TextBox中的空格与换行问题
  11. [MyBatis日记](3)映射器配置文件与映射器接口
  12. VM14安装及使用环境配置
  13. 2021-07-30-DJ-006 Django模型的objects方法、参数详解
  14. RDP Wrapper
  15. 自动驾驶汽车传感器融合系统及多传感器数据融合算法浅析
  16. JAVA实现排列组合
  17. android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
  18. 用canvas画一个太极图(八卦图)
  19. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影系统
  20. 树的结点数+蒲丰投针概率

热门文章

  1. 基于Python利用OpenCV实现Hough变换的形状检测
  2. 深度学习中的反向卷积
  3. 【从零学习OpenCV 4】Mat类构造与赋值
  4. 用30行代码做一个微信智障机器人
  5. greenplum:空值转换函数
  6. 2、使用rpm包安装grafana
  7. I.MX6 android 源码下载
  8. Mybatis + SpringMVC + Maven实现分页查询
  9. [Android]ViewSwitcher使用范例
  10. JAVA基础 (二)反射 深入解析反射机制