如何在Python / Linux中启动包含许多参数的程序

时间:2011-04-13 13:03:51

标签: python windows linux process attributes

以下代码在Windows中正常工作:

subprocess.Popen([PATH_TO_G++]/g++ file.cpp -o file.exe)

但是在Linux中我收到以下错误:

  

OSError:[Errno 2]没有这样的文件或目录

在阅读了文档和几个SO线程之后,我发现subprocess.Popen在Windows和nix系统中的工作方式不同。在Windows中,它将字符串作为参数并启动它,就像您在终端中启动它一样。

在linux中,如果你有参数,它需要一个字符串列表。第一个值是程序本身,然后去属性。您可以通过传递Shell = True参数使其行为像Windows一样,但这对我来说不是一个好的解决方案。

我尝试了shlex.split功能,但它仍无效。

1 个答案:

答案 0 :(得分:4)

根据您的示例,您需要确保命令被正确引用:

subprocess.Popen([PATH_TO_G++ + "/g++", "file.cpp", "-o", "file.exe"])

PATH_TO_G ++没有办法是一个有效的变量名,所以我只是假设你提供了这个例子。

现在,更重要的是,您正在尝试使用子流程做什么?只需启动它并将其作为主要操作?启动它并捕获输出?在后台启动它?

subprocess模块的文档非常清晰,并提供有关如何使用它的a lot of examples