当前位置: 首页 > 面试题库 >

如何使用进度条在Python中复制文件?

狄玉书
2023-03-14
问题内容

使用复制大型文件时shutil.copy(),您没有任何指示操作进展的信息。

我已经把一些作品-
它使用一个简单的进度条类(简单的返回一个简单的ASCII进度栏,作为一个字符串),和一个环open().read(),并.write()做实际的复制。它显示进度条,使用sys.stdout.write("\r%s\r" % (the_progress_bar))它有点黑,但它可以工作。

您可以在github上查看代码(在上下文中)

是否有任何内置模块可以更好地做到这一点?可以对此代码进行任何改进吗?


问题答案:

两件事情:

  • 我想使默认的块大小, 很多 比512大,我将开始与16384,也许更。
  • 为了实现模块化,最好不要让copy_with_prog函数不输出进度条本身,而是调用回调函数,以便调用者可以决定如何显示进度。

也许是这样的:

def copy_with_prog(src, dest, callback = None):
    while True:
        # copy loop stuff
        if callback:
            callback(pos, total)

prog = ProgressBar(...)
copy_with_prog(src, dest, lambda pos, total: prog.update(pos, total))


 类似资料:
  • 经过一番摆弄,我意识到我可能可以使用类似的代码(这段代码可能工作,也可能不工作--我只是快速地记下它,这样我就不会忘记它,它还没有经过测试)。这将允许我更新每个复制文件的进度条。 编辑#2: 我在代码上做了更多的工作,我相信我已经解决了大部分问题。现在的问题是关于SwingWorker的,我相信我需要它来在后台运行长期方法。否则,GUI将变得没有响应(Java文档中有很多关于这一点的文档)。然而,

  • 我想知道是否有办法更新使用NIO库文件的进度条。复制,用于下载工作线程中的文件。代码如下。 有一个进度条,我已经尝试绑定到任务,但似乎所做的只是导致一个错误,并立即重新启用下载按钮。

  • 问题内容: 如何在html / css /javascript中制作进度条。我真的不想使用Flash。在这里可以找到类似的东西 我真正想要的只是一个“进度条”,它可以更改我在PHP中提供的值。您会如何处理?有什么好的教程吗? 问题答案: 您可以通过css控制div的宽度来实现。大致遵循以下原则: 如果您愿意,可以从php发送该宽度值。

  • 我对Java没有太多的经验,并且很难得到一个进度条来工作。我正在使用NetBeans的内置GUI Maker。目前,我的程序从一个目录读取图像到一个图像数组。显然,这需要一点时间,因此我希望一个简单的进度条来更新用户,以了解加载的程度。我已经使用了其中一个拖放进度条组件。 我目前可以获取目录中的文件数,并可以计算加载文件的百分比 文件成功加载到数组中,但进度条只有在加载所有文件后才会更新。我尝试在

  • 我想展示在外部库中执行的计算的进度。 例如,如果我有一些计算方法,我想在我的Form类中为100000个值使用它,我可以写: 我应该在每次计算后执行步骤。但是如果我在外部方法中执行所有100000次计算呢?如果我不想让这个方法依赖于进度条,我应该什么时候“执行步骤”?例如,我可以写 但我不想那样做。

  • 问题内容: 如何在Python中复制文件? 我找不到任何东西。 问题答案: ┌──────────────────┬────────┬───────────┬───────┬────────────────┐ │ Function │ Copies │ Copies │Can use│ Destination │ │ │metadata│permissions│buffer │may be dir