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算法之栈(stack)的实现
Aug 18 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
Python hashlib模块实例使用详解
Dec 24 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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
dedecms模板标签代码官方参考
2007/03/17 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
php实现zip文件解压操作
2015/11/03 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
window.ActiveXObject使用说明
2010/11/08 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
js运动应用实例解析
2015/12/28 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
Vue $attrs & inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
跟老齐学Python之Python文档
2014/10/10 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
python实现共轭梯度法
2019/07/03 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python脚本调试工具安装过程
2021/01/11 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
建筑设计所实习生自我鉴定
2013/09/25 职场文书
交通事故委托书范本
2014/09/28 职场文书
委托书格式要求
2015/01/28 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
python区块链实现简版工作量证明
2022/05/25 Python