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 相关文章推荐
pygame学习笔记(4):声音控制
Apr 15 Python
详细讲解Python中的文件I/O操作
May 24 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
django js实现部分页面刷新的示例代码
May 28 Python
python绘制简单彩虹图
Nov 19 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
python中时间模块的基本使用教程
May 14 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
Django项目创建及管理实现流程详解
Oct 13 Python
分析Python list操作为什么会错误
Nov 17 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 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
cmd下运行php脚本
2008/11/25 PHP
php编写一个简单的路由类
2011/04/13 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
js类 from qq
2006/11/13 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
js比较日期大小的方法
2015/05/12 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
python实现粒子群算法
2020/10/15 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
建筑学推荐信
2013/11/03 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
Python实现文字pdf转换图片pdf效果
2022/04/03 Python