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解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python中标准模块importlib详解
Apr 16 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
Python中关于logging模块的学习笔记
Jun 03 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
详解php的socket通信
2015/08/11 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
JavaScript 常用函数
2009/12/30 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
jQuery实现日历效果
2020/09/11 jQuery
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
一些.net面试题
2014/10/06 面试题
大学生职业生涯规划方案
2014/01/03 职场文书
称象教学反思
2014/02/03 职场文书
员工保密协议书
2014/09/27 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
公司规章制度范本
2015/08/03 职场文书