8.5 filecmp--文件和文件夹比較处理
本模块主要提供了对文件和文件夹进行简单的比較处理,假设须要复杂的文件比較须要使用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--文件和文件夹比較处理的更多相关文章
- python文件和文件夹訪问File and Directory Access
http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...
- Java实现FTP文件与文件夹的上传和下载
Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...
- C# 拷贝指定文件夹下的所有文件及其文件夹到指定目录
要拷贝的文件及其文件夹结构 其中.lab文件不能覆盖 /// <summary> /// 拷贝oldlab的文件到newlab下面 /// </summary> /// < ...
- 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...
- linux文件及文件夹权限
以前上学的时候简单了解了下linux,现在对它的认识也只停留在一些小白命令上.以为我只要不是做服务器端开发的应该不会去碰吧,工作了才知道做开发的多少还是要熟悉一些linux的,至少你的项目会部署在li ...
- 软件工程 Coding.net代码托管平台 Git初学者的使用总结 五步完成 程序,文件,文件夹的Git
一.前言 第一次用git相关的命令行,我使用的是Coding.net代码托管平台.Coding.net 自主打造的基于 Git 的代码托管平台,提供高性能的远端仓库,还有保护分支,历史版本分屏对比. ...
- Java 代码完成删除文件、文件夹操作
import java.io.File;/** * 删除文件和目录 * */public class DeleteFileUtil { /** * 删除文件,可以是文件或文件夹 ...
- [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 教你一招:解决Win10 win7 删除文件或文件夹时提示“找不到该项目”
问题很怪异,解决的办法却很简单. 首先,分析问题 使用不可显示ASCII字符或采用UNICODE字符方法创建的文件或文件夹: 名称中含有..等特殊符号文件或文件夹名称不符合Windows命名规范或建立 ...
随机推荐
- Centos6.8 安装tomcat8.5.11
1.下载 安装包 wget http://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar. ...
- 原生 drag drop HTML5
drag事件( dragstart -- drag -- dragend ) 当按下鼠标开始drag一个可以拖动的对象时,触发dragstart事件,如果元素是不可拖动的话,会出现一个不可拖动的图 ...
- 动态引入javascript
注意最后 "</scr"+"ipt>" 这是必要的,因为浏览器只要看到</script>它就会认为代码到此结束,从而引起错误
- luogu P1563 玩具谜题
https://www.luogu.org/problemnew/show/1563 题目: 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩 ...
- 实现一个websocket服务器-理论篇
本文是Writing WebSocket servers的中文文档,翻译自MDNWriting WebSocket servers.篇幅略长,个人能力有限难免有所错误,抛砖引玉共同进步. websoc ...
- 配置mysql为主主复制步骤
mysql版本:mysql-5.6.24-solaris10-sparc-64bit.tar 操作系统:solaris 11g u10 操作用户:使用非root进行操作安装,a路服务器ip地址为192 ...
- HTML表单设计(上)
1,表单标记<form>...</form> <form>...</form>定义表单的开始位置和结束位置,表单提交时的内容就是<form> ...
- C#获取指定月指定周的日期范围
); MessageBox.Show(end.ToShortDateString());
- 谈谈如何用eoLinker管理各类API接口及分享API接口管理小技巧教程
在前后端分离的开发模式下,前后端往往需要接口文档来进行交互.我的上一篇随笔中已经写到用传统的文档写接口时,由于需求经常变动,接口文档也会随之变动.一开始,某接口信息已经写入文档,但后期因为需求变动,发 ...
- Liunx vi编辑器一些指令
最近几天学习了Liunx vi编辑器 的使用,感觉还比较容易.总结的一点心得: vi分为3个模式,命令模式,尾行模式,编辑模式. 1. 命令模式 与 编辑模式切换 a:光标向后移动一位进入编辑模式 i ...