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

Python子进程:如何在Python中执行进程的子进程?,python,subprocess,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>", l

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

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
          ^
sh:python cimport:未找到命令
文件“”,第1行
“进口
^

您的报价相互纠结。请尝试:

sh -c 'python -c "import sys; print sys.platform"'
或者,如果您试图从另一个python程序内部调用它,也许您的意思是说

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

或者,有没有很好的理由尝试将其嵌套在shell中?

按照首选顺序(如何打印平台信息):

如果要将其作为单独的进程运行:

#!/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)'"])

原因是我在cygwin下运行这个脚本,并且我将使用subprocess调用的脚本与windows和msys/mingw不兼容。我想知道使用的python是否基于cygwin。
subprocess.check_call(['/bin/sh', '-c', 
                       "python -c 'import sys; print(sys.platform)'"])