本模块主要提供了对文件和文件夹进行简单的比較处理,假设须要复杂的文件比較须要使用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. Android 开发笔记___FrameLayout

    xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la ...

  2. JAVAscript学习笔记 jsDOM 第五节 (原创) 参考js使用表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. shiro实现无状态的会话,带源码分析

    转载请在页首明显处注明作者与出处 朱小杰      http://www.cnblogs.com/zhuxiaojie/p/7809767.html 一:说明 在网上都找不到相关的信息,还是翻了大半天 ...

  4. 实现基于LVS负载均衡集群的电商网站架构

    背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...

  5. Java 核心内容相关面试题【4】

    spingmvc 和 structs的区别 我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置. spring3 mvc可以认为已经100%零配置了(除了配置spring mv ...

  6. docker下编译mangoszero WOW60级服务端(一)

    这几天看到暴雪准备开放怀旧服的新闻,突然想到几年前用大芒果window一键服务端自己搭建过服务,就想着在Linux环境下重新编译一套,毕竟Linux作为服务端,性能和稳定性都会高一些,于是在mac虚拟 ...

  7. Vue组件库 VV-UI 开始接受PR啦,有兴趣小伙伴可以一起参与开源哦。

    前言: 刚开源出来的VV-UI目前刚刚起步,组件不是很多,非常欢迎大家的pr和Star.项目地址: https://github.com/VV-UI/VV-UI演示地址: https://vv-ui. ...

  8. 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)

    上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker service create --name web_server httpd ...

  9. osap一站式分析模型

    运营系统分析平台技术设计: 项目定义于运营系统关键指标的数据分析 关键代码描述: HiveWriter 主要用于写hive表抽象,包括加分区,写hive表,写success文件: import org ...

  10. Java 执行CMD/DOS

    最近在写一个自己的邮箱服务器里用到 监视及起/停 windows 中的服务,调查发现还是得用dos来做这些事情 说一下遭遇战的过程 首先是java里如何执行DOS命令,查到下记函数 Runtime.g ...