如何比较两个目录并在python中输出更改的文件(代码片段)

author author     2022-12-29     672

关键词:

我在Linux中有两个目录,其中有两个文件。我需要比较这两个目录并打印出更改的文件。

folder1:
  file1.txt   file2.txt

folder2:
  file1.txt   file2.txt

我需要将folder1folder2进行比较,并打印出这两个目录中不同的文件名。我想首先使用ls命令获取文件列表并将它们放在list中,然后使用python的filecmp进行比较,如下所示:

import os
import filecmp

folder1_path = "/home/user/folder1/"
folder2_path = "/home/user/folder2/"

def ls(path):
   all = []
   walked = os.walk(path)
   for base, sub_f, files in walked:           
       for sub in sub_f:           
            entry = os.path.join(base,sub)
            entry = entry[len(path):].strip("\\")
            all.append(entry)

       for file in files:          
           entry = os.path.join(base,file)
           entry = entry[len(path):].strip("\\")
           all.append(entry)
    all.sort()
    return all

def folder_diff(folder1_path, folder2_path):
    folder1_list = ls(folder1_path)
    folder2_list = ls(folder2_path)

    for item1, item2 in zip(folder1_list, folder2_list):
        res = filecmp.cmp(folder1_path + item1, folder2_path + item2)

data = folder_diff(folder1_path, folder2_path)
print(data)

当文件存在于两个文件夹中时,这会引发错误FileNotFound。任何人都可以建议任何更新。谢谢

答案

为了只有一个功能你可以使用它:

def folder_diff():
    folder1 = os.listdir(PATH1) # folder containing your files
    folder2 = os.listdir(PATH2) # the other folder

    for item1 in folder1:
        for item2 in folder2:
            if(item1==item2):
                res = filecmp.cmp(PATH1+item1, PATH2+item2)

if __name__ == "__main__":
import os
import filecmp
PATH1 = ''
PATH2 = ''
data = folder_diff()
print(data)
另一答案

您也可以使用glob模块完成此操作

import os
import glob
import filecmp

comparison = []
for each in glob.glob('home/user/folder1/**'):
    for each1 in glob.glob('home/user/folder2/**'):
        if os.path.basename(each) == os.path.basename(each1):
            comparison.append(filecmp.cmp(each, each1))

print(comparison)

Python:如何比较两个二进制文件?

】Python:如何比较两个二进制文件?【英文标题】:Python:Howtocomparetwobinaryfiles?【发布时间】:2017-07-2613:58:55【问题描述】:在python中,我需要打印两个二进制文件的差异。我在看difflib.Differ,它做了很多。但假设文本行不同,因... 查看详情

如何在 powershell 中更改目录并在该目录中运行文件?

】如何在powershell中更改目录并在该目录中运行文件?【英文标题】:HowdoIchangedirectoryandrunafileinthatdirectoryinpowershell?【发布时间】:2013-09-2209:15:35【问题描述】:例如,我想运行位于c:/cygwin/目录中的cygwin.bat...我尝试了以下方法,... 查看详情

更改目录并在一个命令中执行文件

...因can\'t-find-my-dataz类型错误而失败。我怎样才能避免键入两个命令来执行一个程序?例子:cd/usr/local/bin/minecraft/java- 查看详情

比较python中的两个CSV文件并输出

】比较python中的两个CSV文件并输出【英文标题】:ComparingtwoCSVfilesinpythonandoutput【发布时间】:2022-01-2404:35:38【问题描述】:我有两个CSV文件。我需要将file1与file2进行比较,并输出file1中不在file2中的任何行。问题是当file1中有两... 查看详情

如何比较两个数组并在id匹配的情况下更改名称?(代码片段)

我有一个学生数组,如下所示student=[id:1,name:'Sam',age:23,id:2,name:'Jolia',age:23,id:3,name:'Peter',age:23]我还有另一个包含了一些学生的最新年龄值,比如下面的例子。updated=[id:2,age:25,id:3,age:21]在本例中,我想通过这两个数组的Id找到交叉点... 查看详情

如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python

】如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python【英文标题】:howtoscanfoldersindirectoryandgetthefolderwiththehighestnumberattheend-python【发布时间】:2021-09-2717:04:19【问题描述】:我对python很陌生,我正在尝试自动化程序。... 查看详情

如何比较两个json文件并在对象中返回不匹配的键和值(代码片段)

JSONFile1:["App_Name":"Test1","Instances":"2","Memory":"2G","Disk_Quota":"1G","App_Name":"Test2","Instances":"2","Memory":"2G","Disk_Quota":"1G","App_Name":"Test3","Instances":"1","Memory":"1G"," 查看详情

如何仅获取 c# 上下文中两个 xml 文件的更改?

】如何仅获取c#上下文中两个xml文件的更改?【英文标题】:Howtogetchangesonly,oftwoxmlfilesinc#context?【发布时间】:2020-01-1301:55:09【问题描述】:我正在设置一个XML转换器,在此步骤之前,我必须比较两个XML文件,过滤掉新的更改或... 查看详情

linux-diff--比较两个文件并输出不同之处

...数][文件1或目录1][文件2或目录2]2.命令功能:diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff命... 查看详情

如何添加两个小时和分钟的地图并在python中添加它们[重复]

】如何添加两个小时和分钟的地图并在python中添加它们[重复]【英文标题】:Howtoaddtwomapsofhoursandminutesandaddtheminpython[duplicate]【发布时间】:2022-01-1822:53:35【问题描述】:所以我有两个持续时间的字典:a=hours:13,minutes:23b=hours:23,minu... 查看详情

Nifi:如何在 nifi 中同步两个目录

】Nifi:如何在nifi中同步两个目录【英文标题】:Nifi:Howtosynctwodirectoriesinnifi【发布时间】:2017-09-2107:07:34【问题描述】:我必须将我的响应流文件写在一个目录中,而不是从中获取数据更改它,然后将它放在其他目录中我想让这... 查看详情

如何在python中比较两个源数据

】如何在python中比较两个源数据【英文标题】:Howtocomparebetweentwosourcesdatainpython【发布时间】:2019-03-2516:02:05【问题描述】:我有来自2个来源的大型数据集,一个是巨大的文本文件(作为新数据),另一个来自数据库(MySQL)(作... 查看详情

如何更改图片上传目录并在 laravel 中查看图片 url

】如何更改图片上传目录并在laravel中查看图片url【英文标题】:Howcanichangetheimageuploaddirectoryandviewimageurlinlaravel【发布时间】:2021-09-3022:49:37【问题描述】:在我的脚本中,所有上传的图像都进入目录“ib”,但我想将该目录更改... 查看详情

更改模块目录后的 Python 酸洗

】更改模块目录后的Python酸洗【英文标题】:Pythonpicklingafterchangingamodule\'sdirectory【发布时间】:2011-01-0811:26:05【问题描述】:我最近更改了程序的目录布局:以前,我将所有模块都放在“主”文件夹中。现在,我已经将它们移... 查看详情

如何在 Python 中更改 Ghostscript 输出文件(在打印机后台处理程序中)

】如何在Python中更改Ghostscript输出文件(在打印机后台处理程序中)【英文标题】:HowtochangeGhostscriptoutputfile(inprinterspooler)inPython【发布时间】:2020-03-2710:27:24【问题描述】:我正在尝试在Python3中打印带有ghostscript的pdf文件。我尝... 查看详情

如何在 Python 3 中比较和可视化两个 .wav 文件?

】如何在Python3中比较和可视化两个.wav文件?【英文标题】:HowdoIcompareandvisualisetwo.wavfilesinPython3?【发布时间】:2019-11-2109:07:24【问题描述】:我在Jupyter上使用Python3,我试图找出音频文件(有一些噪音)与没有原始文件的准确性... 查看详情

如何在ansible中比较多个文件(代码片段)

我正在尝试找到一种方法,可以将一个目录中的多个文件与另一个目录中的文件进行比较。例如-目录/home/ansible/properties/中有10个文件,而远程主机(如/opt/apps/properties/)中的另一个目录中有类似的文件集。我想比较每个可能使... 查看详情

如何遍历 2 个文件中的行,比较值并在满足条件时更新文件中的值?

】如何遍历2个文件中的行,比较值并在满足条件时更新文件中的值?【英文标题】:Howtoiterateovertherowsfrom2files,comparethevaluesandupdatethevalueinafilewhentheconditionismet?【发布时间】:2021-11-2615:51:45【问题描述】:为了将值从10更改为18、1... 查看详情