本模块主要提供了对文件和文件夹进行简单的比較处理,假设须要复杂的文件比較须要使用difflib库来处理。

filecmp.cmp(f1, f2, shallow=True)

比較文件f1和文件f2,当两个文件同样时返回True,否则返回False。假设參数shallow为True,仅仅推断os.stat()函数返回内容是否同样,假设同样就返回True。否则再比較文件内容是否同样,假设同样也返回True。使用shallow參数能够高速地比較文件是否有改动过。

样例:

#python 3.4

import filecmp

r = filecmp.cmp('F:\\temp\\py\\bisect2.py', 'F:\\temp\\py\\bisect2.py')

print(r)

r = filecmp.cmp('F:\\temp\\py\\bisect2.py', 'F:\\temp\\py\\cal_1.py')

print(r)

结果输出例如以下:

True

False

filecmp.cmpfiles(dir1, dir2, common, shallow=True)

比較两个文件夹里同样文件列表的文件。參数dir1是文件夹1,參数dir2是文件夹2。參数common是比較的文件列表。參数shallow是跟上面的函数是一样意义。

本函数执行之后返回三个文件名称列表:同样列表、不同样列表、错误列表。假设文件同样放在同样列表,不同样放不同样列表。假设文件不存在某一个文件夹。就放错误列表。

样例:

#python 3.4

import filecmp

dir1 = 'F:\\temp\\py\\dir1'

dir2 = 'F:\\temp\\py\\dir2'

r = filecmp.cmpfiles(dir1, dir2,

['difflib1.py', 'difflib5.py', 'test1.txt'])

print(r)

结果输出例如以下:

(['difflib1.py'], ['difflib5.py'], ['test1.txt'])

filecmp.clear_cache()

清除文件比較缓冲区。当比較的文件不断地高速改动时,就能够使用这个函数来更新文件的信息。

class filecmp.dircmp(a, b, ignore=None, hide=None)

构造一个新的文件夹比較对象,比較文件夹a和b。參数ignore是忽略列表,是指那些文件不须要进行比較的;參数hide是隐藏的文件列表,默认是[os.curdir, os.pardir]。

这个类主要提供以下的方法:

report()

打印a和b之间的比較结果到系统sys.stdout输出。

report_partial_closure()

打印文件夹a和b。以及公共的子文件夹的比較结果到系统sys.stdout输出。

report_full_closure()

递归全部目标,包含子文件夹,把结果比較输出。

left

内部表示文件夹a。

right

内部表示文件夹b。

left_list

内部表示文件夹a经过隐藏和忽略过滤的文件和子文件夹列表。

right_list

内部表示文件夹b经过隐藏和忽略过滤的文件和子文件夹列表。

common

文件夹a和b都有的公共文件和子文件夹。

left_only

仅在文件夹a出现的文件和子文件夹。

right_only

仅在文件夹b出现的文件和子文件夹。

common_dirs

在文件夹a和文件夹b都出现的子文件夹。

common_files

在文件夹a和文件夹b都出现的文件。

common_funny

比較文件夹a和b不同的文件夹或文件。通过os.stat()比較。

same_files

比較文件夹a和b同样的文件夹或文件。

diff_files

比較文件夹a和b不同的文件夹或文件。通过文件内容比較。

funny_files

不进行比較的文件。

subdirs

子文件夹字典。

filecmp.DEFAULT_IGNORES

须要忽略的文件列表。

样例:

from filecmp import dircmp

def print_diff_files(dcmp):

for name in dcmp.diff_files:

print("diff_file %s found in %s and %s" % (name, dcmp.left,

dcmp.right))

for sub_dcmp in dcmp.subdirs.values():

print_diff_files(sub_dcmp)

dcmp = dircmp('dir1', 'dir2')

print_diff_files(dcmp)

在这个样例里,主要比較文件夹dir1和dir2,为此创建了dircmp对象dcmp,然后调用函数print_diff_files()。在这个函数里主要打印输出不同的文件,并递归到子文件夹里打印子文件夹里不同的文件输出。

蔡军生 QQ:9073204  深圳

8.5 filecmp--文件和文件夹比較处理的更多相关文章

  1. python文件和文件夹訪问File and Directory Access

    http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...

  2. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  3. C# 拷贝指定文件夹下的所有文件及其文件夹到指定目录

    要拷贝的文件及其文件夹结构 其中.lab文件不能覆盖 /// <summary> /// 拷贝oldlab的文件到newlab下面 /// </summary> /// < ...

  4. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  5. linux文件及文件夹权限

    以前上学的时候简单了解了下linux,现在对它的认识也只停留在一些小白命令上.以为我只要不是做服务器端开发的应该不会去碰吧,工作了才知道做开发的多少还是要熟悉一些linux的,至少你的项目会部署在li ...

  6. 软件工程 Coding.net代码托管平台 Git初学者的使用总结 五步完成 程序,文件,文件夹的Git

    一.前言 第一次用git相关的命令行,我使用的是Coding.net代码托管平台.Coding.net 自主打造的基于 Git 的代码托管平台,提供高性能的远端仓库,还有保护分支,历史版本分屏对比. ...

  7. Java 代码完成删除文件、文件夹操作

    import java.io.File;/** * 删除文件和目录 * */public class DeleteFileUtil {    /**     * 删除文件,可以是文件或文件夹     ...

  8. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. 教你一招:解决Win10 win7 删除文件或文件夹时提示“找不到该项目”

    问题很怪异,解决的办法却很简单. 首先,分析问题 使用不可显示ASCII字符或采用UNICODE字符方法创建的文件或文件夹: 名称中含有..等特殊符号文件或文件夹名称不符合Windows命名规范或建立 ...

随机推荐

  1. python3 re正则匹配数据获取案例

    # coding=utf-8import requestsimport jsonfrom retrying import retryimport re class TyY: def __init__( ...

  2. C# Dapper 轻量ORM调试对SQLServer

    Dapper简介 Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快. 使用ORM的好处是增.删.改很快,不用自己写sql,因为这都是重复技 ...

  3. .NET读取Excel文件的三种方法的区别

    ASP.NET读取Excel文件方法一:采用OleDB读取Excel文件: 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(strin ...

  4. vue-cli 如何配置sass

    第一步:安装对应的node模块 npm install node-sass --save-dev npm install sass-loader --save-dev 第二步:在webpack.bas ...

  5. sqli-libs

    这是抄袭你们  铃兰师姐总结的,尽管她很不情愿. (现在只是第八关,相信她会努力的,一定会做完,我也会随时在这个上面更新的,这个是在本地搭建的,想要这个的可以找你们铃兰师姐要啊!!!) less-1: ...

  6. Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memor

    ES进行如下聚合操作时,会报如题所示错误: ➜ Downloads curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "size ...

  7. 快速拥有各种数据访问SqlHelper

    常加班食不按时,偶得清闲嘴溃疡. 美食一顿成泡汤,自此自认忙命人. 这就是此情此景的我,回来聊代码. 列举ADO.NET中的五个主要对象,并简单描述? 答:Connection连接对象,Command ...

  8. jquery.uploadify+spring mvc实现上传图片

    一.前端页面 1.下载jquery.uploadify 去uploadify官网(http://www.uploadify.com/download/)下载压缩包,解压后放在如下路径: 2.html结 ...

  9. Python——正则表达式

    此篇文章结合小甲鱼的笔记和视频整理. 1 编译 Python 通过 re 模块为正则表达式引擎提供一个接口,同时允许你将正则表达式编译成模式对象,并用它们来进行匹配. 正则表达式被编译为模式对象,该对 ...

  10. 安卓自定义控件(四)实现自定义Layout

    本来我是不准备写这篇文章的,我实在想不出有什么样奇怪的理由,会去继承ViewGroup然后自定义一个布局,大概是我的项目经验还不够吧,想了好久,想到了这样一个需求: 需求 如图:在项目中经常有一个这样 ...