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

1 投票
1 回答
863 浏览
提问于 2025-04-16 15:39

下面的代码在Windows系统上运行得很好:

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

但是在Linux系统上,我遇到了以下错误:

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

我查看了文档和几个相关的讨论后发现,subprocess.Popen在Windows和Linux系统中的工作方式是不同的。在Windows中,它接受一个字符串作为参数,就像你在终端中直接输入命令一样。

而在Linux中,如果你有参数的话,它需要一个字符串列表。第一个值是程序本身,后面是参数。你可以通过传递Shell=True这个参数让它像Windows那样工作,但对我来说这不是一个好的解决方案。

我尝试了shlex.split这个函数,但还是不行。

1 个回答

4

根据你的例子,你需要确保命令的引号使用正确:

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

PATH_TO_G++ 这个名字不可能是一个有效的变量名,所以我假设你只是用它来举例。

现在,更重要的是,你想用这个子进程做什么?是只是启动它,让它成为主要操作?还是启动它并获取输出?或者是在后台启动它?

关于 subprocess 模块的文档非常清晰,并且提供了很多 使用示例,可以帮助你了解如何使用它。

撰写回答