pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在 Python 中顯示 FTP 下載進度(ProgressBar)

Show FTP download progress in Python (ProgressBar)(在 Python 中顯示 FTP 下載進度(ProgressBar))
本文介紹了在 Python 中顯示 FTP 下載進度(ProgressBar)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在使用以下 Python 腳本通過 FTP 下載文件.我想要的是在下載時查看進度的詳細信息.為此,我使用了 ProgressBar 但它沒有顯示任何內容.

I am downloading files over FTP using the following Python script. What I wanted is to see the details of the progress while downloading. For that I used ProgressBar but it isn't showing anything.

這是我的代碼:

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

請幫助了解這里的實際問題.謝謝:)

Please help in understanding what's actually wrong here. Thanks :)

推薦答案

你永遠不會更新 ProgressBar.您需要做的是:

You never update the ProgressBar. What you need to do is to:

  • 實現一個函數(或類方法),您將傳遞給 FTP.retrbinary 作為 callback 而不是 file.write.該函數應該執行 file.write 并更新進度條.

  • Implement a function (or a class method) that you will pass to FTP.retrbinary as callback instead of file.write. The function should do file.write and also update the progress bar.

您還需要知道 ProgressBarmaxval 參數的文件/傳輸的大小.為此,您可以使用 FTP.size.

You also need to know size of the file/transfer for maxval argument of ProgressBar. For that you can use FTP.size.

一個簡單的實現是這樣的:

A trivial implementation is like:

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)

現在你得到了你想要的進度條:

And now you get the progress bar you want:

Downloading:  72% [##############################           ] ETA:   0:00:00 242.1 MiB/s


其他人注意:OP 代碼使用 progressbar2 庫.

PyQt 實現:從另一個運行 FTP 下載的線程更新 PyQt 進度.

這篇關于在 Python 中顯示 FTP 下載進度(ProgressBar)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Why I cannot make an insert to Python list?(為什么我不能插入 Python 列表?)
Insert a column at the beginning (leftmost end) of a DataFrame(在 DataFrame 的開頭(最左端)插入一列)
Python psycopg2 not inserting into postgresql table(Python psycopg2 沒有插入到 postgresql 表中)
list extend() to index, inserting list elements not only to the end(list extend() 索引,不僅將列表元素插入到末尾)
How to add element in Python to the end of list using list.insert?(如何使用 list.insert 將 Python 中的元素添加到列表末尾?)
TypeError: #39;float#39; object is not subscriptable(TypeError:“浮動對象不可下標)
主站蜘蛛池模板: 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 煤粉取样器-射油器-便携式等速飞灰取样器-连灵动 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 小小作文网_中小学优秀作文范文大全 | 祝融环境-地源热泵多恒系统高新技术企业,舒适生活环境缔造者! | 多功能干燥机,过滤洗涤干燥三合一设备-无锡市张华医药设备有限公司 | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 刮板输送机,粉尘加湿搅拌机,螺旋输送机,布袋除尘器 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 噪声治理公司-噪音治理专业隔音降噪公司 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 自动焊锡机_点胶机_螺丝机-锐驰机器人 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 |