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读取Android permission文件
Nov 01 Python
Python3使用requests登录人人影视网站的方法
May 11 Python
简单了解python模块概念
Jan 11 Python
django中的HTML控件及参数传递方法
Mar 20 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
Python新手如何理解循环加载模块
May 29 Python
彻底解决Python包下载慢问题
Nov 15 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
python实现socket简单通信的示例代码
Apr 13 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 数据库的一个例子
2006/10/09 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
javascript实现的listview效果
2007/04/28 Javascript
JS event使用方法详解
2008/04/28 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
实例讲解React 组件
2020/07/07 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python3 webservice接口测试代码详解
2020/06/23 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
客户表扬信范文
2014/01/10 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
五年级英语教学反思
2014/01/31 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
村长贪污检举信
2014/04/04 职场文书
导航工程专业自荐信
2014/09/02 职场文书
户外活动总结
2015/02/04 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js