本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008
全文介绍系统内置 filecmp 模块、函数、类及类的方法和属性。
它通过代码抓取并经AI智能翻译和人工校对。
是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创:AhcaoZhu大侠】
无。(单一模块,过于简单。)
也很简单。不过,保持一惯性,还是贴图吧。
◆object
filecmp.dircmp
filecmp, fullname=filecmp, file=filecmp.py
比较文件和目录的实用程序。
类:
dircmp
函数:
cmp(f1, f2, shallow=True) -> int
cmpfiles(a, b, common) -> ([], [], [])
clear_cache()
序号 | 类别 | 数量 |
---|---|---|
1 | int | 1 |
4 | str | 5 |
6 | list | 2 |
8 | dict | 2 |
9 | module | 2 |
10 | class | 2 |
11 | function | 8 |
13 | residual | 2 |
14 | system | 9 |
15 | private | 5 |
16 | all | 24 |
1 BUFSIZE 8192
2 DEFAULT_IGNORES [‘RCS’, ‘CVS’, ‘tags’, ‘.git’, ‘.hg’, ‘.bzr’, ‘_darcs’, ‘pycache’]
3 _cache {}
os, fullname=os, file=os.py
stat, fullname=stat, file=stat.py
clear_cache(), module=filecmp, line:25 at filecmp.py
清除filecmp缓存。
cmp(f1, f2, shallow=True), module=filecmp, line:29 at filecmp.py
比较两个文件。
参数:
f1 -第一个文件名
f2 -第二个文件名
shallow -只是检查统计签名(不读取文件)。默认为True。
返回值:如果文件相同则为True,否则为False。
这个函数对过去的比较和结果使用缓存,如果缓存项的统计信息发生变化,缓存项将失效。缓存可以通过调用clear cache()来清除。
_sig(st), module=filecmp, line:68 at filecmp.py
_do_cmp(f1, f2), module=filecmp, line:73 at filecmp.py
cmpfiles(a, b, common, shallow=True), module=filecmp, line:250 at filecmp.py
比较两个目录中的常见文件。
a, b -目录名称
common -在两个目录中找到的文件名列表
shallow -如果为真,仅基于stat()信息进行比较
返回三个列表的元组:
比较相同的文件,
不同的文件名
不是常规文件。
_cmp(a, b, sh, abs=, cmp=
), module=filecmp, line:277 at filecmp.py
_filter(flist, skip), module=filecmp, line:286 at filecmp.py
demo(), module=filecmp, line:292 at filecmp.py
filterfalse, itertools.filterfalse, module=itertools, line:0 at
filterfalse(function or None, sequence) --> filterfalse object
返回序列中function(item)为false的那些项。如果function为None,则返回为false的项。
dircmp, filecmp.dircmp, module=filecmp, line:0 at
一个管理2个目录比较的类。
dircmp(a, b, ignore=None, hide=None)
A 、 B 目录
IGNORE 要忽略的列表,缺省为 DEFAULT_IGNORES.
HIDE 要隐藏的列表,缺省为[os.curdir, os.pardir]
高级用法:
x = dircmp(dir1, dir2)
x.report() -> 打印 dir1 和 dir2 之间不同处的报告,或者
x.report_partial_closure() -> 打印 dir1 和 dir2 之间不同处的报告、及公共直接子目录。
x.report_full_closure() -> 与上同,递归处理所有子目录.
属性:
left_list, right_list: 左列表,右列表:dir1和dir2中的文件,通过hide和ignore过滤。
common: dir1和dir2中均存在的名称列表。
left_only, right_only: 仅限dir1, dir2中的名称。
common_dirs: dir1和dir2都存在的子目录。
common_files: dir1和dir2都存在的文件。
common_funny: 名称在 dir1 和 dir2 都存在,但类型不同,或者名称不可统计。
same_files:相同文件的列表。
diff_files: 不同的文件名列表。
funny_files: 无法比较的文件列表。
subdirs: dircmp对象的字典,以common_dirs中的名称为键。
1 methodmap={‘subdirs’:
, ‘same_files’:
2 phase0(self)
kind=method class=dircmp objtype=function line:132 at …\filecmp.py
3 phase1(self)
kind=method class=dircmp objtype=function line:140 at …\filecmp.py
4 phase2(self)
kind=method class=dircmp objtype=function line:147 at …\filecmp.py
5 phase3(self)
kind=method class=dircmp objtype=function line:182 at …\filecmp.py
6 phase4(self)
kind=method class=dircmp objtype=function line:186 at …\filecmp.py
7 phase4_closure(self)
kind=method class=dircmp objtype=function line:196 at …\filecmp.py
8 report(self)
kind=method class=dircmp objtype=function line:201 at …\filecmp.py
9 report_full_closure(self)
kind=method class=dircmp objtype=function line:232 at …\filecmp.py
10 report_partial_closure(self)
kind=method class=dircmp objtype=function line:226 at …\filecmp.py
16 _cache {}
17 _sig
18 _do_cmp
19 _cmp
20 _filter
os, fullname=os, file=os.py
OSError, OSError, module=builtins, line:0 at
83 _filemode_table (((40960, ‘l’), (32768, ‘-’), (24576, ‘b’), (16384, ‘d’), (8192, ‘c’), (4096, ‘p’)), ((256, ‘r’),), ((128, ‘w’),), ((211…
系统自带的 测试函数。一并附在这里吧。
def demo():
import sys
import getopt
options, args = getopt.getopt(sys.argv[1:], 'r')
if len(args) != 2:
raise getopt.GetoptError('need exactly two args', None)
dd = dircmp(args[0], args[1])
if ('-r', '') in options:
dd.report_full_closure()
else:
dd.report()