0
我有一个奇怪的问题的作品,我似乎无法化解Python的系统调用,在Windows和Linux
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”传递的命令在Linux中不能使用,使用windows版本。
我需要一种方法来使用相同的代码在两个平台上执行此操作。
为什么你不会使用'if'?像'如果os.name =='posix':','elif os.name =='nt':' –
我认为这是一个解决方案,但是一个讨厌的问题。我发现很难相信我无法进行系统调用,并使用相同的代码在python中读取输出流。 – AndrewGrant
你确定你的代码可以工作吗? '壳=真]'? –