Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
发布时间 - 2026-01-11 01:58:11 点击率:次本文实例讲述了Python编程实现两个文件夹里文件的对比功能。分享给大家供大家参考,具体如下:
#-*-coding:utf-8-*-
#===============================================================================
# 目录对比工具(包含子目录 ),并列出
# 1、A比B多了哪些文件
# 2、B比A多了哪些文件
# 3、二者相同的文件:文件大小相同 VS 文件大小不同 (Size相同文件不打印:与Size不同文件显示未排序)
#===============================================================================
import os, time,difflib
AFILES = [] #EE
BFILES = [] #SVN
COMMON = [] #EE & SVN
def getPrettyTime(state):
return time.strftime('%y-%m-%d %H:%M:%S', time.localtime(state.st_mtime))
# def getpathsize(dir): #获取文件大小的函数,未用上,仅供学习.故注释掉
# size=0
# for root, dirs, files in os.walk(dir):
# #root:目录:str 如: C:\CopySVN\SystemObject\TopoProcedure\Built-in\
# #dirs:目录名称:列表: 如 ['Parsers']
# #files:名称:列表: 如 ['011D0961FB42416AA49D5E82945DE7E9.og',...]
# #file:目录:str, 如 011D0961FB42416AA49D5E82945DE7E9.og
# for file in files:
# path = os.path.join(root,file)
# size = os.path.getsize(path)
# return size
def dirCompare(apath,bpath):
afiles = []
bfiles = []
for root, dirs , files in os.walk(apath):
for f in files:
afiles.append(root + "\\" + f)
for root, dirs , files in os.walk(bpath):
for f in files:
bfiles.append(root + "\\" + f)
#sizeB = os.path.getsize(root + "\\" + f) 此处定义的size无法在commonfiles进行比较. (A,B在各自的循环里面)
# 去掉afiles中文件名的apath (拿A,B相同的路径\文件名,做成集合,去找交集)
apathlen = len(apath)
aafiles = []
for f in afiles:
aafiles.append(f[apathlen:])
# 去掉bfiles中文件名的bpath
bpathlen = len(bpath)
bbfiles = []
for f in bfiles:
bbfiles.append(f[bpathlen:])
afiles = aafiles
bfiles = bbfiles
setA = set(afiles)
setB = set(bfiles)
#print('%$%'+str(len(setA)))
#print('%%'+str(len(setB)))
commonfiles = setA & setB # 处理共有文件
#print ("===============File with different size in '", apath, "' and '", bpath, "'===============")
#将结果输出到本地
#with open(os.getcwd()+'diff.txt','w') as di:
#di.write("===============File with different size in '", apath, "' and '", bpath, "'===============")
for f in sorted(commonfiles):
sA=os.path.getsize(apath + "\\" + f)
sB=os.path.getsize(bpath + "\\" + f)
if sA==sB: #共有文件的大小比较
#pass #print (f + "\t\t" + getPrettyTime(os.stat(apath + "\\" + f)) + "\t\t" + getPrettyTime(os.stat(bpath + "\\" + f)))
#以下代码是处理大小一致,但是内容可能不一致的情况
#print("in sa=sb")
#print(os.getcwd())
saf=[]
sbf=[]
sAfile=open(apath + "\\" + f)
iter_f=iter(sAfile)
for line in iter_f:
saf.append(line)
sAfile.close()
sBfile=open(bpath + "\\" + f)
iter_fb=iter(sBfile)
for line in iter_fb:
sbf.append(line)
sBfile.close()
saf1=sorted(saf)
sbf1=sorted(sbf)
if(len(saf1)!=len(sbf1)):
with open(os.getcwd()+'\\comment_diff.txt','a') as fp:
print(os.getcwd())
fp.write(apath + "\\" + f+" lines size not equal "+bpath + "\\" + f+'\n')
else:
for i in range(len(saf1)):
#print("into pre")
if(saf1[i]!=sbf1[i]):
print('into commont')
with open(os.getcwd()+'\\comment_diff.txt','a') as fp1:
fp1.write(apath + "\\" + f+" content not equal "+bpath + "\\" + f+'\n')
break
else:
with open (os.getcwd()+'\\diff.txt','a') as di:
di.write("File Name=%s EEresource file size:%d != SVN file size:%d" %(f,sA,sB)+'\n')
#print ("File Name=%s EEresource file size:%d != SVN file size:%d" %(f,sA,sB))
# 处理仅出现在一个目录中的文件
onlyFiles = setA ^ setB
aonlyFiles = []
bonlyFiles = []
for of in onlyFiles:
if of in afiles:
aonlyFiles.append(of)
elif of in bfiles:
bonlyFiles.append(of)
#print ("###################### EE resource ONLY ###########################")
#print ("#only files in ", apath)
for of in sorted(aonlyFiles):
with open (os.getcwd()+'\\EEonly.txt','a') as ee:
ee.write(of+'\n')
#print (of)
#print ("*"*20+"SVN ONLY+"+"*"*20)
#print ("#only files in ", bpath)
for of in sorted(bonlyFiles):
with open (os.getcwd()+'\\svnonly.txt','a') as svn:
svn.write(of+'\n')
#print (of)
if __name__ == '__main__':
FolderEE = 'D:\\search\\bb\\ObjectGroup - Copy\\ObjectGroup\\Built-in'
FolderSVN = 'D:\\search\\bb\\ObjectGroup\\ObjectGroup\\Built-in'
dirCompare(FolderEE, FolderSVN)
print("done!")
PS:这里再为大家推荐一款功能相似的在线工具供大家参考使用:
在线文本比较工具:
http://tools./aideddesign/txt_diff
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 文件夹
# 文件
# 对比
# Python 标准库zipfile将文件夹加入压缩包的操作方法
# 浅谈Python中文件夹和python package包的区别
# python 通过文件夹导入包的操作
# python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
# Python打包文件夹的方法小结(zip
# tar
# tar.gz等)
# python包和文件夹有的区别点总结
# 操作技巧
# 进阶
# 相关内容
# 出现在
# 仅供
# 感兴趣
# 数据结构
# 去找
# 给大家
# 更多关于
# 所述
# 程序设计
# 使用技巧
# 文本文件
# 再为
# 文件夹里
# 讲述了
# 目录中
# Parsers
# Built
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel如何生成API文档?(Swagger/OpenAPI教程)
高端网站建设与定制开发一站式解决方案 中企动力
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Laravel中的Facade(门面)到底是什么原理
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
在centOS 7安装mysql 5.7的详细教程
Bootstrap整体框架之CSS12栅格系统
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
JS弹性运动实现方法分析
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何为不同团队 ID 动态生成多个“认领值班”按钮
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
如何在云虚拟主机上快速搭建个人网站?
企业网站制作这些问题要关注
Laravel PHP版本要求一览_Laravel各版本环境要求对照
如何挑选高效建站主机与优质域名?
实例解析Array和String方法
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
常州企业网站制作公司,全国继续教育网怎么登录?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
详解Huffman编码算法之Java实现
如何快速生成橙子建站落地页链接?
Laravel distinct去重查询_Laravel Eloquent去重方法
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
EditPlus 正则表达式 实战(3)
java中使用zxing批量生成二维码立牌
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
如何注册花生壳免费域名并搭建个人网站?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在阿里云虚拟服务器快速搭建网站?
Android GridView 滑动条设置一直显示状态(推荐)
Android中AutoCompleteTextView自动提示
Laravel Fortify是什么,和Jetstream有什么关系
如何在腾讯云服务器快速搭建个人网站?
,交易猫的商品怎么发布到网站上去?
高性能网站服务器配置指南:安全稳定与高效建站核心方案

