Python 具有ed输出的unix diff命令的Windows等效程序
我试图递归地比较两个结构等效的目录(解压缩excel文件中的XML文档),如果有任何文件不同,则使用第二个目录中相应文件的文本覆盖第一个文件中的文本。在Unix命令行中,您可以使用以下命令轻松输出一个脚本,该脚本将对两个文件执行此操作:Python 具有ed输出的unix diff命令的Windows等效程序,python,unix,command-line,diff,windows-7-x64,Python,Unix,Command Line,Diff,Windows 7 X64,我试图递归地比较两个结构等效的目录(解压缩excel文件中的XML文档),如果有任何文件不同,则使用第二个目录中相应文件的文本覆盖第一个文件中的文本。在Unix命令行中,您可以使用以下命令轻松输出一个脚本,该脚本将对两个文件执行此操作: diff -e file1.xml file2.xml > edscript.txt 然后,我可以使用以下命令调用脚本: echo "w" >> edscript.txt ed - file1.txt < edscript.txt e
diff -e file1.xml file2.xml > edscript.txt
然后,我可以使用以下命令调用脚本:
echo "w" >> edscript.txt
ed - file1.txt < edscript.txt
echo“w”>>edscript.txt
ed-file1.txt
但是,我使用的是Git Bash Windows 7,并且没有安装“ed”程序。是否有可以输出脚本并执行的等效程序?如果没有,有没有办法在git bash上安装ed?我已经尝试过sudo-apt-get-install-ed,但是这些命令似乎不可能实现。我的最终目标是使用python和子流程库来运行这些脚本
欢迎任何意见或建议。谢谢是的,这些工具可用于Windows,考虑或. 如果已经安装了git bash,请检查其bin文件夹。应该有一个可以直接调用的diff.exe 对我来说,这就是
C:\ProgramFiles(x86)\Git\bin\diff.exe
(这可能比在windows上尝试从python调用类似*nix的shell,然后在该命令行上运行diff更容易)
编辑:从python执行此操作,假设前面提到的diff.exe路径:
In [40]: import subprocess
In [41]: subprocess.call(["c:/program files (x86)/git/bin/diff.exe", "-e", "c:/users/a.p/empty.py", "c:/users/a.p/.bashrc"])
alias l='ls -a'
alias ll='ls -la'
alias ipy='ipython'
.
Out[41]: 1
GNU工具
同样从cmd.exe
的comp
命令中,尝试help comp
获取参数
编辑:你在这个问题上有python标签,你有可用的python吗?如果是,请查看标准库中的filecmp
模块:
示例:非常感谢!尽管我很难打电话给它。当我想要运行它时,我是否必须将CD放入该目录(这意味着我必须为我想要比较的文件键入完整的文件路径),或者当我与我想要比较的文件位于同一目录时,我是否可以使用您提供的文件路径调用diff?后者是我现在正在做的,但它似乎不认识这条路。我需要做一些花哨的间隔,还是我的第一个建议是唯一的选择?@NoahMendoza你能编辑你的问题或发布你现在正在做的事情吗?我不想猜测细节和做出错误的假设。现在我只想做:“diff-e file1.txt file2.txt>edscript.txt”,然后调用脚本“ed-file1.txt
ed
,请访问-任何与之相关的问题都可能值得他们提出自己的问题。好的,非常感谢。这至少足以获得一些动力。我很感激!谢谢,我现在正在看这两本书。可能有用!是的,我已经试过了,但我要寻找的是能够编写一个可以执行的脚本,就像我最初发布的diff命令一样。comp和fc都没有这个函数。@NoahMendoza:添加了一个关于pythonfilecmp
的编辑,你能在上面找到什么吗?@WalterA有一些有用的东西,但我想要的是输出一个脚本,然后以某种方式执行,因此,所有工作的最终结果是file1现在与file2完全相同。当您需要更多的file2到file1的纯拷贝时,您可以尝试低级差异,或者尝试使用一些python库解释xml,并比较结果结构。我仍然没有达到最终的目标,我猜你想要的是或。