首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python shutil.copytree()是否可以跟踪复制的状态?

Python shutil.copytree()是否可以跟踪复制的状态?
EN

Stack Overflow用户
提问于 2014-10-21 21:38:12
回答 3查看 8.5K关注 0票数 6

我有很多光栅文件(600+)在目录中,我需要复制到一个新的位置(包括它们的目录结构)。是否有一种使用shutil.copytree()跟踪复制状态的方法?通常,对于文件,我将使用下面的代码,但不确定如何对shutil.copytree()执行相同的操作:

代码语言:javascript
复制
for currentFolder, subFolder, fileNames in os.walk(sourceFolder):
   for i in fileNames:
        if i.endswith(".img"):
            print "copying {}".format(i)
            shutil.copy(os.path.join(currentFolder,i), outPutFolder)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-21 21:56:58

是的,通过利用传入的“忽略”参数的函数名,类似的事情是可能的。实际上,类似的内容在python:https://docs.python.org/2/library/shutil.html#copytree-example的示例部分中给出了。

下面还粘贴了示例:

代码语言:javascript
复制
from shutil import copytree
import logging

def _logpath(path, names):
    logging.info('Working in %s' % path)
    return []   # nothing will be ignored

copytree(source, destination, ignore=_logpath)
票数 14
EN

Stack Overflow用户

发布于 2017-02-06 13:27:37

另一个选项是使用copy_function参数copytree。它的优点是,它将被调用的每一个文件被复制,而不是每个文件夹。

代码语言:javascript
复制
from shutil import copytree,copy2

def copy2_verbose(src, dst):
    print('Copying {0}'.format(src))
    copy2(src,dst)

copytree(source, destination, copy_function=copy2_verbose)
票数 9
EN

Stack Overflow用户

发布于 2014-10-21 21:57:11

Python2.7

来自Python2.7的shutil的源代码可以找到这里。您应该能够复制源代码,然后将print name添加到第282行。

Python3.4

来自Python3.4的shutil的源代码可以找到这里。您应该能够复制源代码,然后将print name添加到第307行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26496821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档