当前位置:  编程技术>python

python复制文件代码实现

    来源: 互联网  发布时间:2014-09-04

    本文导语:  主要功能在copyFiles()函数里实现,如下: 代码如下:def copyFiles(src, dst):    srcFiles = os.listdir(src)    dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))    filesCopiedNum = 0    # 对源文件夹中的每个文件若不存在于目的文件夹则复制  ...

主要功能在copyFiles()函数里实现,如下:

代码如下:

def copyFiles(src, dst):
    srcFiles = os.listdir(src)
    dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))
    filesCopiedNum = 0

    # 对源文件夹中的每个文件若不存在于目的文件夹则复制
    for file in srcFiles:
        src_path = os.path.join(src, file)
        dst_path = os.path.join(dst, file)
        # 若源路径为文件夹,若存在于目标文件夹,则递归调用本函数;否则先创建再递归。
        if os.path.isdir(src_path):
            if not os.path.isdir(dst_path):
                os.makedirs(dst_path) 
            filesCopiedNum += copyFiles(src_path, dst_path)
        # 若源路径为文件,不重复则复制,否则无操作。
        elif os.path.isfile(src_path):               
            if not dstFiles.has_key(file):
                shutil.copyfile(src_path, dst_path)
                filesCopiedNum += 1

    return filesCopiedNum

这里我首先使用os.listdir()函数来遍历源文件夹src和目标文件夹dst,得到两个文件列表,但由于我需要判重操作,因此需要在dst文件列表中进行查询操作。由于列表的查询效率不高,而字典是一个哈希表,查询效率较高,因此我将目标文件列表转换成一个只有键没有值的字典:

代码如下:

dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))

然后我遍历源文件列表,若该路径是一个文件夹,先判断该文件夹在目标路径中是否存在,若不存在,则先创建一个新路径。然后递归调用本函数。其实不存在的时候更高效的方法是调用shutil.copytree()函数,但由于此处需要计算拷贝的文件数量,因此就没有调用该函数。

若该路径是一个文件,则首先判断该文件在目标文件夹中是否存在。若不存在,则拷贝。

由于写这个脚本主要是为了同步手机相册到PC,因此只简单地判断一下文件名。若要判断不同名但相同的文件,则可以继续判断一下md5值,这里就不再赘述。

完整代码如下:

代码如下:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# 输入两个文件夹a和b路径,将a中的文件拷进b,并计算拷贝的文件数。重复的不作处理。

import os
import shutil

def copyFiles(src, dst):
    srcFiles = os.listdir(src)
    dstFiles = dict(map(lambda x:[x, ''], os.listdir(dst)))
    filesCopiedNum = 0

    # 对源文件夹中的每个文件若不存在于目的文件夹则复制
    for file in srcFiles:
        src_path = os.path.join(src, file)
        dst_path = os.path.join(dst, file)
        # 若源路径为文件夹,若存在于目标文件夹,则递归调用本函数;否则先创建再递归。
        if os.path.isdir(src_path):
            if not os.path.isdir(dst_path):
                os.makedirs(dst_path) 
            filesCopiedNum += copyFiles(src_path, dst_path)
        # 若源路径为文件,不重复则复制,否则无操作。
        elif os.path.isfile(src_path):               
            if not dstFiles.has_key(file):
                shutil.copyfile(src_path, dst_path)
                filesCopiedNum += 1

    return filesCopiedNum

def test():
    src_dir = os.path.abspath(raw_input('Please enter the source path: '))
    if not os.path.isdir(src_dir):
        print 'Error: source folder does not exist!'
        return 0

    dst_dir = os.path.abspath(raw_input('Please enter the destination path: '))
    if os.path.isdir(dst_dir):
        num = copyFiles(src_dir, dst_dir)
    else:
        print 'Destination folder does not exist, a new one will be created.'
        os.makedirs(dst_dir)
        num = copyFiles(src_dir, dst_dir)

    print 'Copy complete:', num, 'files copied.'

if __name__ == '__main__':
    test()


    
 
 

您可能感兴趣的文章:

  • python实现文件分组复制到不同目录的例子
  • python调用cmd复制文件代码分享
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • python学习手册中的python多态示例代码
  • Python获取网页编码的方法及示例代码
  • 用python代码做configure文件
  • Python 3 Tkinter教程之事件Event绑定处理代码实例
  • 生成Python代码的UML插件 PyUML
  • python中的深拷贝(deepcopy)和浅拷贝(copy)介绍及代码参考
  • python 布尔操作实现代码
  • python下xml解析库lxml最新版下载安装以及代码示例
  • python代码制作configure文件示例
  • Python类的构造函数,析构函数以及垃圾回收机制详细介绍及代码举例
  • python判断端口是否打开的实现代码
  • python字符串格式化输出及相关操作代码举例
  • python冒泡排序算法的实现代码
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • python类型强制转换long to int的代码
  • python 简易计算器程序,代码就几行
  • python 快速排序代码
  • 打开电脑上的QQ的python代码
  • python中使用urllib2获取http请求状态码的代码例子
  • 一则python3的简单爬虫代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • python实现绘制树枝简单示例
  • Python3通过request.urlopen实现Web网页图片下载
  • Python3实现生成随机密码的方法
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • python调用短信猫控件实现发短信功能实例
  • juqery的python实现:pyquery学习使用教程
  • Python实现多行注释的另类方法
  • python实现的重启关机程序实例
  • Python中无限元素列表的实现方法
  • python 实现插入排序算法
  • python使用循环实现批量创建文件夹示例
  • python 实现文件的递归拷贝实现代码
  • python实现哈希表
  • Python实现冒泡,插入,选择排序简单实例
  • python实现倒计时的示例
  • python实现排序算法
  • python实现图片批量剪切示例
  • python实现进程间通信简单实例
  • juqery的python实现:pyquery学习使用教程 iis7站长之家
  • python实现dnspod自动更新dns解析的方法
  • Python不使用print而直接输出二进制字符串
  • 让python同时兼容python2和python3的8个技巧分享
  • Python中实现json字符串和dict类型的互转
  • 使用setup.py安装python包和卸载python包的方法
  • python异常信息堆栈输出到日志文件
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • Python开发者社区整站源码 Pythoner
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • python读取csv文件示例(python操作csv)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3