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局部赋值的规则
Mar 07 Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
python测试mysql写入性能完整实例
Jan 18 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
简述python Scrapy框架
Aug 17 Python
python3读取文件指定行的三种方法
May 24 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面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
jquery中this的使用说明
2010/09/06 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
python的等深分箱实例
2019/11/22 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
机关门卫岗位职责
2013/12/30 职场文书
教师求职信范文
2014/05/24 职场文书
宣传活动总结范文
2014/07/01 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
通讯稿格式及范文
2015/07/22 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python