python + 如何打印来自 os.system 的值

jan*_*ngo 0 python

为什么这个简单的python脚本不打印真正的redhat版本?

version = os.system( ' cat /etc/redhat-release  | awk \'{print $7}\' '  )
print ("my version is " ,version)
Run Code Online (Sandbox Code Playgroud)

当我运行它时

我们有:

7.2
('my version is ', 0)
Run Code Online (Sandbox Code Playgroud)
  1. 为什么我们得到 0 而不是 7.2?
  2. 如何避免从 os.system 获取版本 - 7.2?

ilk*_*chu 11

os.system()只运行进程,它不捕获输出:

如果命令生成任何输出,它将被发送到解释器标准输出流。

返回值是进程的退出代码:

在 Unix 上,返回值是以为 wait() 指定的格式编码的进程的退出状态。

您需要使用类似subprocess.check_output()subprocess.Popen()直接来捕获输出。

>>> arch = subprocess.check_output("uname -a | awk '{print $9}'", shell=True);
>>> arch
'x86_64\n'
Run Code Online (Sandbox Code Playgroud)