`
desert3
  • 浏览: 2160354 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

python文件夹复制

阅读更多
需求:复制1个10多个G的文件夹(另外机器共享过来的文件夹,里面含有约10w个文件)到本机一个目录(另外那台机器磁盘满了的原因)

使用windows的文件夹复制,发现经常在复制一部分文件后,因某些莫名其妙的原因被中断(提示某个文件复制失败,网络被断开,可能是由于网络不稳定),然后就要从头再来,搞了几个小时还没有搞完,烦死

就想到用python写个脚本来做这个事情:文件已经存在并且大小一致时不重复复制加快处理速度

代码如下
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#@author zcwang3@gmail.com
#@version 2010-09-25 14:57

import os
import time

sourceDir = r"\\192.168.3.250\mmtimages"
targetDir = r"D:\mmtimages"
copyFileCounts = 0

def copyFiles(sourceDir, targetDir):
    global copyFileCounts
    print sourceDir
    print u"%s 当前处理文件夹%s已处理%s 个文件" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), sourceDir,copyFileCounts)
    for f in os.listdir(sourceDir):
        sourceF = os.path.join(sourceDir, f)
        targetF = os.path.join(targetDir, f)
              
        if os.path.isfile(sourceF):
            #创建目录
            if not os.path.exists(targetDir):
                os.makedirs(targetDir)
            copyFileCounts += 1
            
            #文件不存在,或者存在但是大小不同,覆盖
            if not os.path.exists(targetF) or (os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))):
                #2进制文件
                open(targetF, "wb").write(open(sourceF, "rb").read())
                print u"%s %s 复制完毕" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF)
            else:
                print u"%s %s 已存在,不重复复制" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF)
        
        if os.path.isdir(sourceF):
            copyFiles(sourceF, targetF)
        
if __name__ == "__main__":
    try:
        import psyco
        psyco.profile()
    except ImportError:
        pass
    copyFiles(sourceDir,targetDir)
分享到:
评论
3 楼 Xorcerer 2010-10-08  
让我想起rsync。
2 楼 desert3 2010-09-29  
用python写的程序发现每秒大概能复制6 7 个图片文件(每个100k左右)

后来找到工具FastCopy,每秒大概能复制11个左右,速度更快,还有一些容错的功能
就直接用FastCopy,上面的代码就放弃了
1 楼 sikeh 2010-09-26  
distutils.dir_util.copy_tree does what you want.

Copy an entire directory tree src to a new location dst. Both src and dst must be directory names. If src is not a directory, raise DistutilsFileError. If dst does not exist, it is created with mkpath(). The end result of the copy is that every file in src is copied to dst, and directories under src are recursively copied to dst. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by update or dry_run: it is simply the list of all files under src, with the names changed to be under dst.

相关推荐

    Python 批量复制文件夹,不复制里面的内容

    Python 批量复制文件夹,不复制里面的内容 使用教学:https://blog.csdn.net/weixin_44291381/article/details/116229784

    python脚本文件夹间复制

    python脚本文件夹间复制,python脚本文件夹间复制,python脚本文件夹间复制

    python复制文件夹 [包含子文件夹 询问是否覆盖文件]

    Windows 上的 xcopy 居然不可以实现 不覆盖文件复制文件夹 我用python实现了 参数 write_exists True: 覆盖 False: 不覆盖

    python进行文件夹复制和jar包的合并

    在这个场景下,我们将探讨如何使用Python进行文件夹复制以及如何合并JAR(Java Archive)包。首先,我们来理解这两个概念。 文件夹复制是日常编程任务中的常见需求。Python提供了多种方式来实现这一功能,其中最...

    文件夹下所有图片的读取以及显示(python程序)

    文件夹下所有图片的读取以及显示(python程序) 本文将详细介绍如何使用 Python 程序读取文件夹中的图片,并将其显示出来。本文适用于图像处理的第一阶段,代码简单易懂,易于阅读和理解。 读取文件夹中的图片 在...

    python 复制文件到指定文件夹

    copytree()函数会将原始文件夹中的所有文件和子文件夹复制到目标文件夹中。 三、复制文件时解决文件冲突 在复制文件时,可能会出现文件冲突的情况,即目标路径中已经存在同名文件。为了避免文件冲突,可以使用 ...

    python文件和文件夹复制函数

    文件夹复制涉及到递归,因为文件夹可能包含多个子文件夹和文件。这里我们需要使用Python的`os`模块来获取文件和文件夹信息,以及创建新的目录。以下是文件夹复制函数的实现: ```python import os def copy_mulu...

    文件夹复制、文件复制工具

    这里我们将深入探讨“文件夹复制”和“文件复制”这两个关键概念,以及相关的工具和技术。 首先,文件复制是指将一个或多个文件从源位置移动或复制到目标位置的过程。这个操作在各种场景中都非常常见,例如备份数据...

    python一键复制打包文件夹工具

    快速复制: 通过简单的命令,将源文件夹(A文件夹)中的内容一键复制到目标文件夹(B文件夹)。 自动压缩: 脚本会自动将复制的文件压缩成一个便捷的ZIP包,减小文件大小,方便传输与存储。 定时关机: 在复制和压缩...

    Python批量复制Word表格中内容

    在这个场景下,我们关注的是如何使用Python批量复制Word文档中的表格内容。这通常涉及到读取Word文件,解析其内容,特别是表格部分,并将这些内容复制或保存到其他地方。以下是两种可能的方法来实现这个目标: 方法...

    python通过paramiko复制远程文件及文件目录到本地

    复制远程服务器上的文件及文件夹到本地目录。 解释一下什么叫paramiko: paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp...

    python执行scp命令拷贝文件及文件夹到远程主机的目录方法

    SCP(Secure Copy)是基于SSH协议的安全文件传输工具,它允许用户通过加密连接将文件从本地复制到远程主机或者反之。 在给定的例子中,我们看到一个Python脚本`3s.py`,它使用了`subprocess`模块来调用操作系统级别...

    Python-ppcp带进度条显示的文件和目录复制命令行工具

    Python的ppcp是一个非常实用的命令行工具,它扩展了标准的`cp`命令,为文件和目录的复制过程增加了进度条显示。这个工具对于在大量数据转移时提供用户友好的体验尤其有用,因为它能让用户实时看到复制进度,而不是...

    使用python os模块复制文件到指定文件夹的方法

    而本文主要关注的是如何使用Python的os模块和shutil模块来复制文件到指定的文件夹。这一过程不仅涉及到文件的读写操作,还包括了文件路径的处理以及复制过程中性能的优化。 首先,我们来看看基本的复制文件流程。...

    py批量复制文件夹及其内容

    按txt的文件夹名,批量复制到指定目录

    python 获取文件夹下文件名称并写入到excel

    运用python语言获取文件夹下文件名称,并写入到excel中,会用到xlrd,xlwt模块,如果没有的可以在我的资源里下。 这个代码能解决简单目录下的文件名称获取,如若发现问题欢迎及时提出~!

    用python一键复制文件夹内所有图片到指定目录

    复制每个文件后,脚本检查该文件是否存在于目标文件夹中,以验证复制是否成 功。 5错误处理和日志记录: 如果复制过程中出现任何异常,脚本将捕获这些异常并将其打印到控制台,以便用 户了解发生了什么错误。 它会...

    文件夹复制功能(将一个文件复制到另外目录下)

    在编程环境中,如Java、Python、C#或Node.js,都有对应的API或库函数来实现文件夹复制。以Python为例,可以使用`shutil`模块的`copytree()`函数。这个函数接受源目录和目标目录作为参数,然后递归地复制整个目录结构...

Global site tag (gtag.js) - Google Analytics