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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
Python字符串处理实现单词反转
Jun 14 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
用python对excel进行操作(读,写,修改)
Dec 25 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采集中国代理服务器网的方法
2015/06/16 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
javascript 验证日期的函数
2010/03/18 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
Python性能优化技巧
2015/03/09 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
python 制作磁力搜索工具
2021/03/04 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
护士求职信
2014/07/05 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android
聊聊redis-dump工具安装问题
2022/01/18 Redis