首页 > 编程知识 正文

python有下载大文件的库吗(python3标准库 pdf)

时间:2023-05-06 18:50:46 阅读:88023 作者:4384

前言

文件的比较有几种,例如比较文件内容、比较文件大小、直接比较整个项目文件等。 特别是在项目更新迭代中,可以使用该库比较当前版本和以前版本的文件有什么不同。

因此,本篇将详细介绍Python的文件比较库: filecmp。

在比较

生成示例文件

文件之前,首先需要用于比较的文件。 所以,为了以后的测试,首先做几个文件。 示例如下所示。

def mkfile (文件名,内容) :

withopen (文件名,' w ' ) as f:

f.write (内容文件名)。

返回

mfile ()文件CMPS/one.txt ),) 1212121212 ) ) )。

mfile ()文件CMPS/two.txt,) 1212121212 ) ) ) )。

mfile (文件CMPS/three.txt ),333333333 ) )在这里,我们先创建三个文件。 其中两个文件的内容相同。

cmp()(比较文件)

fliecmp库提供了cmp ()函数,用于比较文件系统上的两个文件。 示例如下所示。

导入文件CMP

打印(文件CMP.CMP (文件CMPS /一个. txt )、文件CMPS/two.txt )、显示=假)

打印(文件CMP.CMP (文件CMPS /一个. txt )、文件CMPS /树. txt )、显示=假)

打印(文件中央处理器('文件中央处理器/一个. txt ','文件中央处理器/two.txt ' ) )

print (文件CMP.CMP ) )文件CMPS/one.txt,)文件CMPS /一次. txt ) ) ) ) ) )之后,效果如下。

如果参数shallow为True,则只判断os.stat ()函数返回的内容是否相同,如果相同则返回True,否则比较文件的内容是否相同,如果相同则返回True。 使用shallow参数可以快速比较文件是否发生了更改。 (shallow参数默认为True )

cmpfiles()(比较一组文件)

cmp ) )函数用于比较一个文件,但要比较两个目录中的一组文件,必须使用cmpfiles ) )函数。

导入文件CMP

运行打印(文件CMP.CMP文件(文件CMPS、“文本”、公用=[ ' 13.png ',' 14.png ',' one.txt'] )后,效果如下

这里返回了三个列表。 分别是相同的列表、不同的列表和错误列表。 请注意,虽然同一列表是两个目录中的同一文件,不同列表是两个目录中的不同文件,但common指定了要比较的文件。 也就是说,这三个列表中的每个文件必须在common规范中用于比较,否则在列表中不存在比较。 错误列表意味着目录中完全没有文件。

dircmp()(比较目录)

之前的两个函数都是对文件的比较,但是项目文件的反复比较经常直接比较整个目录结构,所以也需要掌握目录的比较。 fliecmp库提供的目录比较函数是dircmp (。 示例如下所示。

导入文件CMP

DC=文件中央处理器(“文件中央处理器”,“文本”) )。

执行dc.report ()后,效果如下。

age/f5d72693d9734be8b13185a24f188fa7?from=pc">

第1行为对比的两个文件夹,第2第3行为对比的两个目录中的所有文件。第4行是对比后的结果,这里只有3个文件完全相同。但是需要注意的是,report()函数只是用于比较当前目录下的文件,不包括里面文件夹以及文件夹下面的文件。如果需要递归比较所有目录文件,需要用到report_full_closure()。

示例如下:

import filecmp dc = filecmp.dircmp('filecmps', 'text') dc.report_full_closure()

运行之后,效果如下:

left_list与right_list

在对比文件之前,我们可以列出所比较目录中的文件以及子目录。示例如下:

import filecmp dc = filecmp.dircmp('filecmps', 'text') print(dc.left_list) print(dc.right_list)

运行之后,效果如下:

left_list为第1个参数的目录,right_list为第2个参数的目录,把2个参数看成左右,自然很好区分。

忽略部分文件进行对比

在对比两个目录的所有文件之时,我们还可以手动地过滤掉不需要对比的文件及文件夹,比如我们不对比文件中的123文件夹中的所有文件,可以直接这样操作:

import filecmp dc = filecmp.dircmp('filecmps', 'text',ignore=['123']) dc.report_full_closure()

运行之后,效果如下:

report_full_closure()函数本来需要一层一层目录去对比的。这里,博主过滤掉了其唯一的子目录123,所以只存在一层文件的对比。目录结构如下:

其他属性

除了这些方法与属性之外,还有其他的属性供开发者调用,比如只查找相同的文件,或者只判断某个目录的独有文件,可以这样操作:

import filecmp dc = filecmp.dircmp('filecmps', 'text') print(dc.common) print(dc.right_only) print(dc.left_only)

运行之后,效果如下:

common:为2目录同时存在的文件名

right_only:为右目录独有的文件

left_only:为左目录独有的文件。

这里的common公共目录还可以进一步的操作,示例如下:

import filecmp dc = filecmp.dircmp('filecmps', 'text') print(dc.common_dirs) print(dc.common_files) print(dc.common_funny)

运行之后,效果如下:

common_dirs:公共的文件夹

common_files:公共的文件

common_funny: 2个目录中类型不同的内容,或os.stat()指出的有错误的地方(可以简单的理解有一个文件夹是123,一个文件也是123,那么就会出现在common_files中)

以上是相同的划分,我们还有不同的划分,示例如下:

import filecmp dc = filecmp.dircmp('filecmps', 'text') print(dc.same_files) print(dc.diff_files) print(dc.funny_files)

这里一一对应上面的公共,只是是不同的不是公共的。运行之后,效果如下:

最后还有一个属性:subdirs,用于将目录名映射到新的dircmp对象。示例如下:

import filecmp dc = filecmp.dircmp('filecmps', 'text') print(dc.subdirs)

运行之后,效果如下:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。