Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法


Posted in Python onMarch 05, 2015

本文实例讲述了Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法。分享给大家供大家参考。具体如下:

这个东东本来是做来给公司数据同步用的:新服务器还没正式启用,旧的服务器还在使用,每天都有大量图片传到旧服务器上面,为了避免备份全部图片,所以写了这么个工具。

1. 运行效果如下图所示:

Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法

2. Python代码如下:    

# coding=gbk

'''

Created on 2011-1-7

@author: HH

'''

import os,ConfigParser

'''

递归列出某目录下的文件,放入List中

'''

def listDir (fileList,path):

    files=os.listdir(path)

    for i in  files:

        file_path=path+"\\"+i

        if os.path.isfile(file_path):

            fileList.append(file_path)

    for i in files:

        file_path=path+"\\"+i

        if os.path.isdir(file_path):

            #fileList.append(file_path)

            listDir(fileList,file_path)

    return fileList

'''

将List中内容写入文件

'''

def writeListToFile(list,path):

    strs="\n".join(list)

    f=open(path,'wb')

    f.write(strs)

    f.close()

'''

读入文件内容并放入List中

'''

def readFileToList(path):

    lists=[]

    f=open(path,'rb')

    lines=f.readlines()

    for line in lines:

        lists.append(line.strip())

    f.close()

    return lists

'''

比较文件--以Set方式

'''

def compList(list1,list2):

    return list(set(list1)-set(list2))

'''

复制List中文件到指定位置

'''

def copyFiles(fileList,targetDir):

    for file in fileList:

        targetPath=os.path.join(targetDir,os.path.dirname(file))

        targetFile=os.path.join(targetDir,file)

        if not os.path.exists(targetPath):

            os.makedirs(targetPath)

        if not os.path.exists(targetFile) or (os.path.exists(targetFile) and os.path.getsize(targetFile)!=os.path.getsize(file)):

            print "正在复制文件:"+file

            open(targetFile,'wb').write(open(file,'rb').read())

        else:

            print "文件已存在,不复制!"

if __name__ == '__main__':

    path=".svn"

    #获取源目录

    txtFile="1.txt"

    #目录结构输出的目的文件

    tdir="cpfile"

    #复制到的目标目录

    cfFile="config.ini";

    #配置文件文件名

    fileList=[]

    #读取配置文件

    if(os.path.exists(cfFile)):

        cf=ConfigParser.ConfigParser()

        cf.read(cfFile)

        path=cf.get("main", "sourceDir")

        txtFile=cf.get("main","txtFile")

        tdir=cf.get("main","targetDir")

    else:

        print "配置文件不存在!"

        raw_input("\n按 回车键 退出\n")

        exit()

    if(os.path.exists(txtFile)):

        #如果导出的文件存在,就读取后比较

        list1=readFileToList(txtFile)

        print "正在读取文件列表……"

        fileList=listDir (fileList,path)

        print "正在比较文件……"

        list_res=compList(fileList,list1)

        if len(list_res)>0:

            print "以下是原目录中不存在的文件:\n"

            print "\n".join(list_res)

            print "\n共计文件数:"+str(len(list_res))+"\n"

            if raw_input("\n是否复制文件?(y/n)")!='n':

                copyFiles(list_res,tdir)

        else:

            print "没有不相同的文件!"

    else:

        #如果导出的文件不存在,则导出文件

        print "正在读取文件列表……"

        fileList=listDir (fileList,path)

        writeListToFile(fileList,txtFile)

        print "已保存到文件:"+txtFile

    raw_input("\n按 回车键 退出\n")

3. 配置文件名:config.ini如下:
#配置文件名:config.ini

[main]

sourceDir=wwwroot

txtFile=1.txt

targetDir=cp

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python 正则表达式 概述及常用字符
May 04 Python
Python程序设计入门(3)数组的使用
Jun 16 Python
python实现分页效果
Oct 25 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
Python内置模块turtle绘图详解
Dec 09 Python
使用Django和Python创建Json response的方法
Mar 26 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python 处理图片像素点的实例
Jan 08 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
parser.add_argument中的action使用
Apr 20 Python
Python挑选文件夹里宽大于300图片的方法
Mar 05 #Python
python基于windows平台锁定键盘输入的方法
Mar 05 #Python
Python格式化压缩后的JS文件的方法
Mar 05 #Python
Python随机生成彩票号码的方法
Mar 05 #Python
Windows下安装python2.7及科学计算套装
Mar 05 #Python
Python可跨平台实现获取按键的方法
Mar 05 #Python
Python读取mp3中ID3信息的方法
Mar 05 #Python
You might like
PHP中实现图片的锐化
2006/10/09 PHP
十天学会php之第八天
2006/10/09 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
javascript void(0)的妙用
2009/10/21 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
js判断节假日实例代码
2017/12/27 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
Python中的id()函数指的什么
2017/10/17 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
员工安全责任书范本
2014/07/24 职场文书
补充协议书
2015/01/28 职场文书
惊天动地观后感
2015/06/10 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis