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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
对numpy中shape的深入理解
Jun 15 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python3最长回文子串算法示例
Mar 04 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
Python for循环搭配else常见问题解决
Feb 11 Python
django实现后台显示媒体文件
Apr 07 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操作MySQL事务实例
2014/11/05 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
全面理解Python中self的用法
2016/06/04 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
银行领导证婚词
2014/01/11 职场文书
简历的自我评价
2014/02/03 职场文书
火锅店营销方案
2014/02/26 职场文书
诚信考试承诺书
2014/03/27 职场文书
师德模范事迹材料
2014/06/03 职场文书
教师读书笔记
2015/06/29 职场文书