Python子进程:如何在python中执行进程的子进程?

时间:2015-12-15 11:21:38

标签: python subprocess

我希望能够运行以下命令:

sh -c "python -c "import sys;sys.platform""

但是我没有使用子流程

我试过以下但是

subprocess.check_output(["sh", "-c", ["python", "-c",  '"import sys; print sys.platform"']])

我得到以下输出:

sh: python-cimport: command not found
File "<string>", line 1
    "import
          ^

2 个答案:

答案 0 :(得分:2)

按优先顺序(如何打印平台信息):

#!/usr/bin/env python
import platform

print(platform.platform())

如果您想将其作为单独的流程运行:

#!/usr/bin/env python
import subprocess
import sys

subprocess.check_call([sys.executable or 'python', '-m', 'platform'])

如果你想在shell中运行:

#!/usr/bin/env python
import subprocess

subprocess.check_call('python -m platform', shell=True)

在POSIX上,它等同于:

subprocess.check_call(['/bin/sh', '-c', 'python -m platform'])

您的具体命令:

subprocess.check_call(['/bin/sh', '-c', 
                       "python -c 'import sys; print(sys.platform)'"])

答案 1 :(得分:1)

你的报价相互纠缠在一起。尝试:

sh -c 'python -c "import sys; print sys.platform"'

或者,如果你试图从另一个python程序中调用它,也许你的意思是说...

subprocess.check_output(['python', '-c', 'import sys; print sys.platform'])

或者是否有充分的理由尝试将其嵌套在shell中?