如何在Python/Linux中启动具有多个参数的程序

如何在Python/Linux中启动具有多个参数的程序,python,windows,linux,process,attributes,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中,如果有参数,则需要字符串列表。第一个值是程序本身,然后

以下代码在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函数,但仍然不起作用。

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

subprocess.Popen([PATH_TO_G++ + "/g++", "file.cpp", "-o", "file.exe"])
路径_到_G++不可能是有效的变量名,所以我假设您提供了一个示例

现在,更重要的是,您打算如何处理子流程?只要启动它,让它成为主要的操作?启动它并捕获输出?在后台启动它


该模块的文档非常清晰,并提供了如何使用该模块的信息。

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

subprocess.Popen([PATH_TO_G++ + "/g++", "file.cpp", "-o", "file.exe"])
路径_到_G++不可能是有效的变量名,所以我假设您提供了一个示例

现在,更重要的是,您打算如何处理子流程?只要启动它,让它成为主要的操作?启动它并捕获输出?在后台启动它


该模块的文档非常清晰,并提供了如何使用该模块的信息。

您是否尝试过“subprocess.Popen”([“progpath”、“arg1”、“arg2”、“arg3”)?@khachik,是的,但我可能弄错了。如何在我的示例中使用参数?可以在所有平台上以序列形式传入参数。你的实际问题是什么?你的例子没有意义,因为它是无效的语法。你能提供导致“没有这样的文件或目录”的代码吗?你试过` subprocess.Popen([“progpath”,“arg1”,“arg2”,“arg3]”)吗?@khachik,是的,但我可能弄错了。如何在我的示例中使用参数?可以在所有平台上以序列形式传入参数。你的实际问题是什么?你的例子没有意义,因为它是无效的语法。你能提供导致“没有这样的文件或目录”的代码吗?