4

我做了一个小应用程序,基本上在某些时候我调用 distutils.dir_util.copy_tree 将文件复制到目的地。谁能帮我链接一个基本的进度条,例如:

[======]50%

到复制过程......不幸的是,我无法猜测复制文件夹树需要很长时间,因为它会不时有所不同。提前感谢任何会回答我的人。

4

3 回答 3

3

distutils.dir_util.copy_tree()不提供可用于此的回调。您将需要用于os.walk()枚举文件系统对象,然后用于shutil.copy[2]()复制实际对象。

于 2012-04-10T18:47:33.607 回答
0

Corey Glodberg 写了一个简单的库,用于在命令行应用程序上执行 ascii 进度条,也许你会觉得它很有趣:

http://coreygoldberg.blogspot.com.es/2010/01/python-command-line-progress-bar-with.html

于 2012-04-10T18:53:42.550 回答
0

正如 Python 的文档中所解释的,您可以为 shutil.copytree 提供回调。

from shutil import copytree

def _countFiles(path, names):
    #do someting with "path" and "names"
    return []   # nothing will be ignored

copytree(source, destination, ignore=_countFiles)

我没有编写代码来取得进展,但你明白了:

  1. 计算目录(和子目录)中的文件
  2. 在“_countFiles”中,增加已处理文件的数量
  3. 进度 = nb_processed_files * 100 / nb_total_files

问候

于 2013-07-02T21:36:36.847 回答