Python,如何将进度条链接到distutils.dir_util.copy_tree

时间:2012-04-10 18:36:44

标签: python python-2.7

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

[======]50%

到复制过程...不幸的是我无法猜测我是否需要复制文件夹树,因为它会不时发生变化。 提前感谢任何愿意回答我的人。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分: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. progress = nb_processed_files * 100 / nb_total_files
  4. 此致