使用进度条在python中复制文件

     2023-02-23     239

关键词:

【中文标题】使用进度条在python中复制文件【英文标题】:copy files in python with progress bar 【发布时间】:2020-06-17 06:40:27 【问题描述】:

我有一个 python 脚本,可以复制选定位置中存在的文件夹和文件。 此任务完美运行,现在我想在复制时显示进度条。

我使用 tqdm 包在控制台中显示进度条,效果很好,但问题是它在每个文件上显示进度条并每次遍历所有现有文件.

示例:如果一个文件夹包含 128 个文件,它将像这样显示进度条 128 次

100%---------128/128 100%---------128/128

我想要的是为所有正在复制的文件显示进度条 1 次。

代码:

i=0
j=0
z=0
for dirpath, dirnames, files in os.walk(src):           
    print(f'Found directory: dirpath')
    if len(dirnames)==0 and len(files)==0:
        print("this directory is empty")
        pass

    for  file in files:
        full_file_name = os.path.join(dirpath, file)

        if os.path.join(dirpath) == src:
            if file.endswith("pdf"):
                if not os.path.exists(dst2):
                    os.mkdir(dst2)
                else:
                    print("the path alredy exist")

                 shutil.copy(full_file_name, dst2)
                i+=1

            elif file.endswith("docx") or file.endswith("doc"):

                 shutil.copy(full_file_name, dst)
                j+=1

        elif os.path.join(dirpath)== src2:
            if file.endswith("pdf"):
                numfile = len(files)

# i think the for loop must not be in this part.
                for z in enumerate(tqdm(numfile)): 
                    sleep(.1)

                 shutil.copy(full_file_name, dst3)
                z+=1

【问题讨论】:

【参考方案1】:

只需创建一个 tkinter 进度条小部件并将值从 for 循环传递给它。 进度完成后关闭窗口,而不是打印到控制台

Progressbar Image

使用 tkinter 更新进度条的代码示例:

from tkinter import *
from tkinter.ttk import Progressbar
import time
def progressbar(ProgressValue):  # Update Progress bar with a int/float/string Round 0-100 #
    ProgBar['value'] = ProgressValue; root.update()
root = Tk()
ProgBar = Progressbar(root, length=365, style='black.Horizontal.TProgressbar')
ProgBar.pack()

time.sleep(2)
progressbar('10') #Use this
time.sleep(2)
progressbar('50')
time.sleep(2)
progressbar('100')
root.mainloop()

【讨论】:

以及如何将进度条的更新与正在复制的文件联系起来? root.overrideredirect(True) 使用此行隐藏标题栏上的最小化最大化和关闭按钮 只除for循环计数(进度条(文件数/100)) 统计所有3种文件的总数,除以100,每次都添加到进度条中

在网站中下载的图像的图像进度条在 FF 中无法使用适当的结果

】在网站中下载的图像的图像进度条在FF中无法使用适当的结果【英文标题】:ImageprogressbarforimagesbeingdownloadedinwebsitenotworkingwithappropriateresultsinFF【发布时间】:2012-04-3022:03:23【问题描述】:我正在做一个使用大量图片的项目,很... 查看详情

为啥自定义进度条在android中没有动画?

...条第1期:第一个问题是进度条只是显示而不是动画,我使用asynctask在后台从外部数据库加载大量数据。第二个问题:第二个问题是 查看详情

进度条在 XMLHTTPRequest 中不起作用

...述】:我想在php中上传图片但同时显示进度状态,在下面使用XMLHttpRequest的代码中,图片正在正确上传,但我看不到进度条在移动。这是我的代码。请帮助解决我的问题。<html><head><scriptsr 查看详情

如何使用 tqdm 在 python 中添加进度条

】如何使用tqdm在python中添加进度条【英文标题】:howtoaddprogressbarinpythonusingtqdm【发布时间】:2020-06-2420:44:05【问题描述】:我有一个列出文件和目录并复制所需的脚本。现在我需要添加一个进度条来显示使用tqdm包的复制进度问... 查看详情

Rails Activestorage + DirectUpload javascript进度条在使用“remote:true”时不显示

】RailsActivestorage+DirectUploadjavascript进度条在使用“remote:true”时不显示【英文标题】:RailsActivestorage+DirectUploadjavascriptprogressbarnotshowingwhenusing"remote:true"【发布时间】:2019-03-0602:13:32【问题描述】:我一直在我的Rails应用程... 查看详情

使用进度在 Windows 命令行上复制文件

】使用进度在Windows命令行上复制文件【英文标题】:CopyfilesonWindowsCommandLinewithProgress【发布时间】:2010-09-0816:43:16【问题描述】:我需要使用Windows命令行(默认在XPPro或更高版本上可用)复制文件并在此过程中显示进度。进度指... 查看详情

大文件复制过程中的进度(复制项目和写入进度?)

...示其进度?有一些解决方案可以将Write-Progress与循环结合使用来复制许多文件并显示进度。但是我似乎找 查看详情

使用 NSFileManager 在复制文件期间更新进度条

】使用NSFileManager在复制文件期间更新进度条【英文标题】:updateprogressbarduringcopyfilewithNSFileManager【发布时间】:2013-07-0619:39:07【问题描述】:我复制文件然后我的应用程序完成从资源启动到缓存目录。但我想在复制文件的过程... 查看详情

XPages 进度条在服务器页面持久性设置“将页面保留在内存中”时无法按预期工作

...ory"【发布时间】:2015-08-1110:40:29【问题描述】:我想使用MarkLeusnik(感谢他)非常好的ProgressBar实现。不幸的是, 查看详情

在 Xamarin Forms 中下载带有进度条的文件

...【发布时间】:2015-08-1813:32:33【问题描述】:我正在尝试使用下载进度条在XamarinForms(PCL,因此WebClient不可用)中创建一个下载页面。我使用了来自Xamarin的以下信息,但没有成功:http://developer.xamarin.com/recipe 查看详情

复制文件时显示进度百分比

...的文件夹中。在复制时,我显示的是ProgressDialog,我正在使用AsyncTask进行此操作。我试图用百分比显示正在复制的文件的进度,但我遇到的问题是进度显示为50%并保持在50%直到文件完成复制。这方面有很 查看详情

进度条和文件复制问题?

...CopyingProblem?【发布时间】:2010-11-2022:43:05【问题描述】:使用VB6在我的项目中,当我将文件从一个文件夹复制到另一个文件夹时,我想像复制一样显示进度条......,一旦文件被复制,进度条就会显示100%Completed。代码。\'文件复制... 查看详情

正确使用进度条

】正确使用进度条【英文标题】:Properuseofprogressbar【发布时间】:2016-08-1407:16:53【问题描述】:这是我第一次在C#中使用进度条。我的代码正在复制一些文件,我想通过进度条显示进度。我不喜欢我的代码的一点是,我必须通过... 查看详情

在进度条上显示文件复制状态

...:13:20【问题描述】:我正在尝试执行低级文件复制,但也使用确定的进度条显示我的进度。有什么办法可以做到这一点吗?我查看了许多邮件档案,还有一篇博客文章解释了如何在carbon中进行操作,但这对我不起作用。【问题讨... 查看详情

无法获得文件复制进度

...题描述】:我正在尝试获取正在复制的文件的进度最初我使用下面的代码发送一个复制文件的请求。一旦创建了文件。我发送响应success=1并开始复制过程并调用getProgress$.ajax(url:\'copyFile.php\',type:\'post\',dataType:\'json 查看详情

Chromecast-音量进度条在电视上可见,但在我的 android 移动设备上不可见

...device【发布时间】:2015-02-2314:07:18【问题描述】:我正在使用以下代码来增加和减少电视的音量,同时通过Chromecast从设备播放视频。我可以看到电视上的音量增加减少进度条,同时按下设备上的 查看详情

快速文件复制与进度(代码片段)

...制到USB闪存设备,并在UI中显示此副本的进度。为此,我使用简单的while循环并通过8kB块复制文件以获得复制进度。问题是,它很慢。我将在近10分钟内复制一个100MB的文件,这是不可接受的。如何实现更快的文件复制?我正在考... 查看详情

python实用工具用python在控制台输出进度条(代码片段)

 进度条在一些计时任务中会经常使用,这里提供两种在控制台输出进度条显示的简单源代码:#进度条1importtimeforiinrange(1,101):print('\\r'+'▋'*i+'当前进度:%'.format(i),end='')time.sleep(0. 查看详情