如何将os.system()输出存储在python的变量或列表中[重复]


问题内容

这个问题已经在这里有了答案

运行shell命令并捕获输出 (18个答案)

5个月前关闭。

我正在尝试通过使用以下命令在远程服务器上执行ssh来获取命令的输出。

os.system('ssh user@host " ksh .profile; cd dir; find . -type f |wc -l"')

该命令的输出是14549 0

为什么输出为零?有什么办法将输出存储在变量或列表中?我也尝试将输出分配给变量和列表,但我在变量中只得到0。我正在使用python 2.7.3。


问题答案:

在这一点上有很多很好的SO链接。尝试从Python运行shell命令并捕获输出,
将os.system的输出分配给变量,并阻止它显示在
启动器的屏幕上。简而言之

import subprocess
direct_output = subprocess.check_output('ls', shell=True) #could be anything here.

shell = True标志应谨慎使用:

来自文档:警告

如果与不受信任的输入结合使用,则使用shell = True调用系统外壳可能会带来安全隐患。有关详细信息,请参见“常用参数”下的警告。

请参阅更多信息:http :
//docs.python.org/2/library/subprocess.html