2015-12-15 139 views
1

我希望能够运行以下命令:但是我没有与子这样做Python子进程:如何在python中执行进程的子进程?

我曾尝试以下,但

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

我得到以下

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

输出:

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

回答

1

您的报价是getti相互纠缠在一起。尝试:

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

或者,如果你想从里面另一个Python程序调用它,也许你的意思是说这个...

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

或者是有努力有很大的原因将它嵌入壳内?

+0

的原因是我在cygwin下运行这和我对与子进程调用脚本与Windows和MSYS/MinGW的不兼容。我想知道使用的python是否是基于cygwin的。 – Har

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']) 

如果你想在运行壳:

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