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连接mysql数据库示例(做增删改操作)
Dec 31 Python
python解析html开发库pyquery使用方法
Feb 07 Python
Python实现LRU算法的2种方法
Jun 24 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
Python实现的本地文件搜索功能示例【测试可用】
May 30 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
python 字典访问的三种方法小结
Dec 05 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
Python如何实现机器人聊天
Sep 10 Python
Python下载的11种姿势(小结)
Nov 18 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写UltraEdit插件脚本实现方法
2011/12/26 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
python实现简易通讯录修改版
2018/03/13 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
新员工欢迎词
2014/01/12 职场文书
春节活动策划方案
2014/01/24 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
优秀学生评语大全
2014/04/25 职场文书
地陪导游欢迎词
2015/01/26 职场文书
入党积极分子群众意见
2015/06/01 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js