我试图从命令行运行Eclipse来自动导入一些项目,但是pythons子进程有一个问题。子进程似乎忽略了我的命令参数,直接运行eclipse。在
以下是我要做的:
subprocess.call(["C:/eclipse/eclipsec",
"-nosplash",
"--launcher.suppressErrors",
"-application org.eclipse.cdt.managedbuilder.core.headlessbuild",
"-data", workspace_dir,
"-import", project_dir])
但是当我运行这个Eclipse时,它只是打开而不执行导入。但是,如果我将命令更改为:
^{pr2}$其中eclipse_import.bat
是:
set workspace_dir=%1
set project_dir=%2
C:/eclipse/eclipsec -nosplash --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data %workspace_dir% -import %project_dir%
然后一切都会像我期望的那样。在
关于什么会导致这些差异呢?在
我假设问题是
"-application org.eclipse.cdt.managedbuilder.core.headlessbuild"
列表元素。你应该把它分成两半了解如何分割行的一种方法是使用
^{pr2}$shlex
模块:并将其提供给您
call
或Popen()
的参数列表你称它为应该正常工作,我不知道为什么不行。也许Eclipse试图以一种奇怪的方式接受参数,你的批处理脚本可以正确处理,但
subprocess.call()
不能,但这完全是我的猜测。在作为替代方法,您可以尝试用
shell=True
参数调用它,并将参数列表改为字符串:这将导致默认shell解析参数,而不是在Python中本机执行,这与批处理脚本的解决方法非常相似。在
相关问题 更多 >
编程相关推荐