Python 在忽略文件中的某些特定行的同时自动执行目录差异

Python 在忽略文件中的某些特定行的同时自动执行目录差异,python,regex,diff,araxis,Python,Regex,Diff,Araxis,我需要比较两个目录,并产生某种不同的结构化输出(文本文件很好)。也就是说,输出可能如下所示: file1 exists only in directory2 file2 exists only in directory1 file3 is different between directory1 and directory2 我不在乎格式,只要有信息就行。第二个要求是,在扩散两个文件时,我需要能够忽略某些字符序列。Araxis Merge具有以下功能:您可以键入一个正则表达式和任何文件,它们唯

我需要比较两个目录,并产生某种不同的结构化输出(文本文件很好)。也就是说,输出可能如下所示:

file1 exists only in directory2
file2 exists only in directory1
file3 is different between directory1 and directory2
我不在乎格式,只要有信息就行。第二个要求是,在扩散两个文件时,我需要能够忽略某些字符序列。Araxis Merge具有以下功能:您可以键入一个正则表达式和任何文件,它们唯一的区别在于匹配该正则表达式的字符序列将被报告为相同

这将使Araxis Merge成为一个很好的候选者,但到目前为止,我还没有找到生成差异的结构化输出的方法。即使在启动带有命令行参数的consolecompare.exe时,它也只会打开一个Araxis GUI窗口来显示差异

那么,是否存在以下两种情况之一

  • 一种让Araxis Merge将差异结果打印到文本文件的方法
  • 另一个实用程序,在忽略特定字符的情况下执行差异 序列,并产生结构化输出

如果此类实用程序作为Python的模块或插件存在,则需要额外的积分。请记住,这必须完全通过命令行/python脚本完成-无GUI。

在某种程度上,普通的
diff
命令可以做到这一点,即比较目录内容并忽略与特定正则表达式模式匹配的更改(使用
-i
选项)

发件人:

快速演示:

[me@home]$ diff images/ images2
Only in images2: x
Only in images/: y
diff images/z images2/z
1c1
< zzz
---
> zzzyy2

[me@home]$ # a less verbose version
[me@home]$ diff -q images/ images2
Only in images2: x
Only in images/: y
Files images/z and images2/z differ

[me@home]$ # ignore diffs on lines that contain "zzz"
[me@home]$ diff -q -I ".*zzz.*" images/ images2/
Only in images2/: x
Only in images/: y
[me@home]$diff图像/图像2
仅在图像2中:x
仅在图像中/:y
差异图像/z图像2/z
1c1
ZZYY2
[me@home]$#不太详细的版本
[me@home]$diff-q图像/图像2
仅在图像2中:x
仅在图像中/:y
文件images/z和images2/z不同
[me@home]$#忽略包含“zzz”的行上的差异
[me@home]$diff-q-I“*zzz.*”图像/图像2/
仅在图像2中/:x
仅在图像中/:y

在某种程度上,普通的
diff
命令可以做到这一点,即比较目录内容并忽略与特定正则表达式模式匹配的更改(使用
-i
选项)

发件人:

快速演示:

[me@home]$ diff images/ images2
Only in images2: x
Only in images/: y
diff images/z images2/z
1c1
< zzz
---
> zzzyy2

[me@home]$ # a less verbose version
[me@home]$ diff -q images/ images2
Only in images2: x
Only in images/: y
Files images/z and images2/z differ

[me@home]$ # ignore diffs on lines that contain "zzz"
[me@home]$ diff -q -I ".*zzz.*" images/ images2/
Only in images2/: x
Only in images/: y
[me@home]$diff图像/图像2
仅在图像2中:x
仅在图像中/:y
差异图像/z图像2/z
1c1
ZZYY2
[me@home]$#不太详细的版本
[me@home]$diff-q图像/图像2
仅在图像2中:x
仅在图像中/:y
文件images/z和images2/z不同
[me@home]$#忽略包含“zzz”的行上的差异
[me@home]$diff-q-I“*zzz.*”图像/图像2/
仅在图像2中/:x
仅在图像中/:y

如果您使用而不是
比较
会发生什么?如果您使用而不是
比较
会发生什么?几乎忘记了,这是在windows上运行的。我正在研究一个针对windows端口的bash,因为它看起来非常诱人!MinGW应该能够为您提供一个bash端口和所有这些*nix好东西。还有cygwin。差点忘了,这是在windows上运行的。我正在研究一个针对windows端口的bash,因为它看起来非常诱人!MinGW应该能够为您提供一个bash端口和所有这些*nix好东西。还有cygwin。