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使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
使用grappelli为django admin后台添加模板
Nov 18 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
Python实现字典按照value进行排序的方法分析
Dec 23 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
python简易远程控制单线程版
Jun 20 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
python同步windows和linux文件
Aug 29 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
Flask response响应的具体使用
Jul 15 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生成静态HTML文档的原理
2012/10/29 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
JavaScript类库D
2010/10/24 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
详解javascript函数的参数
2015/11/10 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python笔记之观察者模式
2019/11/20 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
个人自荐信
2013/12/05 职场文书
中专生职业生涯规划书范文
2013/12/29 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
情况说明书格式范文
2014/05/06 职场文书
安全承诺书格式范本
2015/04/28 职场文书
python 逐步回归算法
2021/04/06 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
Python 文字识别
2022/05/11 Python