什么是Popen的列表格式并在python子进程中调用?

问题描述 投票:1回答:1

我最近介绍了有用的子进程库及其Popen和调用方法来从python进程中分出进程。但是,我对如何形成列表的一般规则感到有些困惑,该列表作为popen的参数传递。第一个问题是,为什么我不能只传递一个字符串,就像我输入到终端,而不是将元素分成列表项?

那么,一般规则是什么?例如,如果shell命令看起来像

/usr/bin/env python3 script.py arg1 arg2

那么Popen参数列表应该如何?我可以传递任何shell命令吗?那么我在哪里可以找到将任何shell命令拆分为列表项的一般规则?

python-3.x bash subprocess fork popen
1个回答
0
投票

这可能与以下内容重复:

Using a Python subprocess call to invoke a Python script

你想在新的子进程中启动python脚本吗?

请注意,在Linux中,分叉是完全不同的,因此在Windows中。

通常你会传递一个像这样的参数列表:

p = subprocess.Popen([command, arg1, arg2,],
                     stdout=subprocess.PIPE)

哪里

command = "python" # or "python3"

并且您可以选择获取输出或处理错误:

output, error = p.communicate()

此别名必须在您的PATH中,否则您应该使用该二进制文件或virtualenv的完整路径...

如果您使用的是Python3,请考虑使用async,但当然也许这对您的用例没有任何好处。

© www.soinside.com 2019 - 2024. All rights reserved.