Python系统调用,可在Windows和Linux上运行

2024-10-03 19:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个奇怪的问题,我似乎无法解决

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中不起作用。在

我需要一种在两个平台上使用相同代码执行此操作的方法。在


Tags: trueonwindowsstdoutprocshellouterr
1条回答
网友
1楼 · 发布于 2024-10-03 19:27:57

可移植代码应该使用一个列表参数(dropshell=True),或者如果需要shell=True,它应该将命令作为字符串传递。在

不要使用相对路径,如../:传递绝对路径(包括文件扩展名)或依赖PATHenvvar并使用类似于program = 'engine'的内容。在

相关问题 更多 >