返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用fliecmp实现比较文件的操作
  • 452
分享到

Python使用fliecmp实现比较文件的操作

Python比较文件Pythonfliecmp比较文件Python文件比较 2022-06-02 22:06:17 452人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言生成示例文件cmp()(比较文件)cmpfiles()(比较一组文件)dircmp()(比较目录)left_list与right_list忽略部分文件进行对比其他属性前言 对于文件的比较一般有几种,比如比较文

目录
  • 前言
  • 生成示例文件
  • cmp()(比较文件)
  • cmpfiles()(比较一组文件)
  • dircmp()(比较目录)
    • left_list与right_list
    • 忽略部分文件进行对比
    • 其他属性

前言

对于文件的比较一般有几种,比如比较文件的内容,比较文件的大小,或者直接对比整个项目文件。特别是在项目的更新迭代中,可以通过该库来比较当前版本与之前版本有哪些文件不同。

所以,本篇将详细讲解python的文件比较库:filecmp。

生成示例文件

在比较文件之前,我们首先需要有用于比较的文件。所以,为了后面的测试,我们先来创建一些文件。示例如下:


def mkfile(filename,content):
    with open(filename,'w') as f:
        f.write(content or filename)
    return

mkfile('filecmps/one.txt','1212121212')
mkfile('filecmps/two.txt','1212121212')
mkfile('filecmps/three.txt','333333333')

这里,我们先创建3个文件,其中2个文件的内容相等。

cmp()(比较文件)

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


import filecmp

print(filecmp.cmp('filecmps/one.txt', 'filecmps/two.txt', shallow=False))
print(filecmp.cmp('filecmps/one.txt', 'filecmps/three.txt', shallow=False))
print(filecmp.cmp('filecmps/one.txt', 'filecmps/two.txt'))
print(filecmp.cmp('filecmps/one.txt', 'filecmps/one.txt'))

运行之后,效果如下:

cmp

如果参数shallow为True,只判断os.stat()函数返回内容是否相同,如果相同就返回True,否则再比较文件内容是否相同,如果相同也返回True。使用shallow参数可以快速地比较文件是否有修改过。(shallow参数默认为True)

cmpfiles()(比较一组文件)

cmp()函数用于单个文件的比较,而要对比两个目录中的一组文件,我们需要使用cmpfiles()函数,示例如下:


import filecmp

print(filecmp.cmpfiles('filecmps', 'text', common=['13.png', '14.png', 'one.txt']))

运行之后,效果如下:

cmpfiles

这里返回了3个列表,分别是相同列表,不同列表以及错误列表。相同列表放的是两个目录中相同的文件,不同列表是两个目录中不同的文件,但需要注意common指定了需要对比的文件,也就是说这3个列表的每个文件必须在common指定中才会用于对比,不指定不会对比也不会存在于列表中,哪怕文件夹下面有其他文件。错误列表指的是某个目录根本没有该文件。

dircmp()(比较目录)

前面2个函数都是针对文件进行的比较,但是项目文件的迭代对比往往直接对比的是整个目录结构,所以我们还需要掌握目录的比较。fliecmp库提供的目录比较函数为:dircmp()。示例如下:


import filecmp

dc = filecmp.dircmp('filecmps', 'text')
dc.report()

运行之后,效果如下:

比较目录

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

示例如下:


import filecmp

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

运行之后,效果如下:

report_full_closure

left_list与right_list

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


import filecmp

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

运行之后,效果如下:

right与left

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)

运行之后,效果如下:

9

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)

运行之后,效果如下:

subdirs

到此这篇关于Python使用fliecmp实现比较文件的操作的文章就介绍到这了,更多相关Python 比较文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python使用fliecmp实现比较文件的操作

本文链接: https://lsjlt.com/news/10872.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python使用fliecmp实现比较文件的操作
    目录前言生成示例文件cmp()(比较文件)cmpfiles()(比较一组文件)dircmp()(比较目录)left_list与right_list忽略部分文件进行对比其他属性前言 对于文件的比较一般有几种,比如比较文...
    99+
    2022-06-02
    Python 比较文件 Python fliecmp比较文件 Python 文件比较
  • 如何使用awk的比较操作符
    这篇文章主要介绍了如何使用awk的比较操作符,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对于使用 awk 命令的用户来说,处理一行文本中的数字或者字符串时,使用比较运算符来...
    99+
    2023-06-10
  • python 文件内容对比操作
    #-*-coding:utf-8-*- import re f1 = open('d:/test/mail/bounce_list.txt','r') f2 = open('d:/test/mail/828-...
    99+
    2023-01-31
    操作 文件 内容
  • Java 文件操作:与其他编程语言的比较
    ...
    99+
    2024-04-02
  • Python使用mmap实现内存映射文件操作
    前言 内存映射通常可以提高I/O的性能,因为使用内存映射时,不需要对每个访问都建立一个单独的系统调用,也不需要在缓冲区之间复制数据,内核和用户都能很方便的直接访问内存。 说明  1)什么叫映射?    ==>...
    99+
    2022-06-02
    Python 内存映射文件操作 Python 内存映射
  • 使用Python操作PDF文件
    从PDF读取文本内容和从已经有的文档生成新的PDF。 需要用到的模块是PyPDF2. mstamy2/PyPDF2: A utility to read and write PDFs...
    99+
    2024-04-02
  • 如何使用Python文件响应框架实现高效的文件操作?
    如何使用Python文件响应框架实现高效的文件操作? 在日常的开发工作中,文件操作是一个非常常见的任务。Python作为一门高级编程语言,提供了许多方便的文件操作函数和模块。其中,文件响应框架是一个非常强大的工具,可以帮助我们高效地处理大量...
    99+
    2023-07-20
    响应 文件 框架
  • python实现时间的比较
    下面介绍下Python中比较两个日期大小的脚本. 在实际工作中用到,以供后续参考及备忘 时间区间比较函数 import time # 这里比较l_t...
    99+
    2023-01-31
    时间 python
  • python比较两个文件的差异
    使用python脚本比较两个文件的差异内容并输出到html文档中,可以通过浏览器打开查看。一、脚本使用对比nginx配置文件的差异 python python_diff_file.py -f1 web26.conf -f2 web103.c...
    99+
    2023-01-31
    差异 两个 文件
  • Python实现文件及文件夹操作大全
    目录一、文件操作1.1 文件常规操作1.2 文件读写1.3 文件相关属性访问二、文件夹操作2.1 文件夹常规操作2.2 遍历文件夹2.3 文件夹相关属性访问三、其他相关操作3.1 工...
    99+
    2024-04-02
  • Python如何实现文件夹操作
    本文小编为大家详细介绍“Python如何实现文件夹操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现文件夹操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、文件操作1.1 文件常规操作操...
    99+
    2023-06-30
  • 使用Springboot整合GridFS实现文件操作
    目录GridFsOperations,实现GridFS文件上传下载删除上传下载删除功能实现测试上传下载删除GridFsOperations,实现GridFS文件上传下载删除 最近学习...
    99+
    2024-04-02
  • Python使用mmap如何实现内存映射文件操作
    这篇文章给大家分享的是有关Python使用mmap如何实现内存映射文件操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明 1)什么叫映射?   ==>就是给一个对象(可以是变量、物理等),起一个唯一的别...
    99+
    2023-06-15
  • python使用glob检索文件的操作
    一、检索当前目录下所有文件、文件夹 from glob import glob glob('./*') Output: ['./0a.wav', './aaa', './1b.wav', './1a.wav', ...
    99+
    2022-06-02
    python glob 检索文件
  • python使用NumPy文件的读写操作
    一、使用NumPy读写文本文件 在数据分析中,经常需要从文件中读取数据或将数据写入文件,常用的存储文件的格式有文本文件、CSV格式文件、二进制格式文件和多维数据文件等。 1.将1维或...
    99+
    2024-04-02
  • Python操作XML文件的使用指南
    目录什么是 XMLPython XML 解析模块xml.etree.ElementTree 模块使用 parse() 函数使用 fromstring() 函数寻找感兴趣的元素修改 X...
    99+
    2024-04-02
  • Python实现简单的文件操作合集
    目录一、文件操作1.打开2.关闭 3.写入4.读取 二:python中自动开启关闭资源一、文件操作 1.打开 r+ 打开存在文件 文件不存在 报错 file = ...
    99+
    2024-04-02
  • Linux怎么使用Meld比较文件夹
    这篇文章将为大家详细讲解有关Linux怎么使用Meld比较文件夹,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用 Meld 比较文件夹打开 Meld 工具,然后选择 比较文件夹Directory comp...
    99+
    2023-06-28
  • FileZilla如何实现文件夹内容比较
    这篇文章给大家分享的是有关FileZilla如何实现文件夹内容比较的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。FileZilla文件夹内容比较文件夹内容比较就是对两台不同的机器上的相关目录下的内容进行比较,然后...
    99+
    2023-06-16
  • 使用Python对Csv文件操作实例代码
    csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存储为csv文件,文件内容是: No.,Name,Age,Score 1,mayi,...
    99+
    2022-06-04
    实例 操作 代码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作