我有一个奇怪的问题,我似乎无法解决
from subprocess import PIPE, Popen
exeLocation = "../Engine.exe"
# Works on windows
proc = Popen([exeLocation, arg1, arg2],stdout=PIPE,shell=True])
(out,err) = proc.communicate()
# Works on Linux
proc = Popen(" ".join([exeLocation, arg1, arg2]),stdout=PIPE,shell=True])
(out,err) = proc.communicate()
由于某些原因,“..”不是在windows上运行linux版本时抛出的命令错误。在
由于某些原因,传递给“exeLocation arg1 arg2”的命令在使用windows版本的linux中不起作用。在
我需要一种在两个平台上使用相同代码执行此操作的方法。在
可移植代码应该使用一个列表参数(drop
shell=True
),或者如果需要shell=True
,它应该将命令作为字符串传递。在不要使用相对路径,如
../
:传递绝对路径(包括文件扩展名)或依赖PATH
envvar并使用类似于program = 'engine'
的内容。在相关问题 更多 >
编程相关推荐