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 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
Python编程flask使用页面模版的方法
Dec 28 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
使用python turtle画高达
Jan 19 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
python 高阶函数简单介绍
Feb 19 Python
新手必备Python开发环境搭建教程
May 28 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
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
Python 3中的yield from语法详解
2017/01/18 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
python多线程并发及测试框架案例
2019/10/15 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
Python之多进程与多线程的使用
2021/02/23 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
更夫岗位责任制
2014/02/11 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
优秀员工获奖感言
2014/03/01 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
质量标语大全
2014/06/12 职场文书
股指期货心得体会
2014/09/10 职场文书
小学国庆节活动总结
2015/03/23 职场文书
农村党员干部承诺书
2015/05/04 职场文书
老舍《猫》教学反思
2016/02/17 职场文书