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

标签 python file-io

当使用 shutil.copy() 复制大文件时,您看不到操作的进展情况。

我整理了一些有用的东西 - 它使用一个简单的 ProgressBar 类(它简单地返回一个简单的 ASCII 进度条,作为一个字符串),以及一个 open().read() 循环和 .write() 进行实际的复制。它使用 sys.stdout.write("\r%s\r"% (the_progress_bar)) 显示进度条,这有点老套,但它有效。

您可以看到代码(在上下文中)on github here

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

最佳答案

两件事:

  • 我会让默认的 block 大小比 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))

关于python - 如何使用进度条在 Python 中复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274493/

相关文章:

python - 在python中反序列化objective-c二进制NSMutableArray

python - 绘制给定数据集的功率谱密度时需要 abs () 方法

python - 寻找 wikidump python lib 的示例或文档

HTML5拖放和多文件上传

java - 从 Java 调用时如何在 Ant 脚本中查找资源泄漏

python - 使用 pip 安装特定的软件包版本

python - 我的代数求解器哪里出了问题?

c++ - 读取多个文件

file-io - WriteFile线程安全

c - 用 C 解析 wtmp 日志