我正在使用Beyond Compare 3来查看两个XML文件之间的区别。我愿意制作一个小的python脚本,在执行时将打开文件,准备在Beyond Compare工具中进行比较。
到目前为止,我尝试从命令行语法调用BC3,如下所示:
BCompare.exe "c:\Ref-2.xml" "c:\Cop-2.xml"
但是当我尝试从python脚本执行相同的语法时,如下所示,它会抛出错误
from subprocess import check_output
check_output('BCompare.exe "c:\Ref-2.xml" "c:\Cop-2.xml"', shell=True)
显示的错误是:
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'BCompare.exe "c:\Ref-2.xml" "c:\Cop-2.xml"' returned non-zero exit status 1
我错过了什么吗?我尝试了不同的解决方案,使用this教程和许多其他人打开命令行指令,但它不起作用。
答案 0 :(得分:1)
做这样的事情。给出绝对路径.exe
check_output(absolute_path_of_beyond_compare "c:\Ref-2.xml" "c:\Cop-2.xml"', shell=True)
我可以使用以下代码打开Beyond Compare:
from subprocess import check_output
check_output("BCompare.exe Test1.txt Test2.txt", shell=True)
其中BCompare.exe路径添加在路径变量中,Test1.txt Test2.txt存在于我执行程序的同一目录中。
答案 1 :(得分:1)
import subprocess
subprocess.Popen([r"C:\Program Files\Beyond Compare 4\BCompare.exe", r"FullFilePath_File1", r"FullFilePath_File2"])
我在我的产品上进行了测试,并且有效。
我没有使用Checkout,而是使用Popen。
我正在通过安装Anaconda3-5.2.0-Windows-x86_64
Python版本= 3.6.5
答案 2 :(得分:0)
使用安装了超比较的精确路径,或将其添加到环境变量“Path”。 如果使用确切的安装路径,请放置“\”C:\ Program Files \ Beyond Compare 4 \ BCompare.exe \“test1.txt test2.txt” \“能够读取路径中的特殊字符和额外空格