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 collections模块实例讲解
Apr 07 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
将Python的Django框架与认证系统整合的方法
Jul 24 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
python+opencv实现动态物体追踪
Jan 09 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Python importlib动态导入模块实现代码
Apr 16 Python
Django实现图片上传功能步骤解析
Apr 22 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Django如何批量创建Model
Sep 01 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP 第一节 php简介
2012/04/28 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Python chardet库识别编码原理解析
2020/02/18 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
Python的collections模块真的很好用
2021/03/01 Python
中学生获奖感言
2014/02/04 职场文书
客服部班长工作责任制
2014/02/25 职场文书
合作意向书模板
2014/03/31 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
总经理致辞
2015/07/29 职场文书
家长会后的感想
2015/08/11 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
python实现自定义日志的具体方法
2021/05/28 Python
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
Python的三个重要函数详解
2022/01/18 Python
MySQL 字符集 character
2022/05/04 MySQL