微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Popen在python上使用python –version无法获得python版本

我正在处理以下代码.

#!/usr/bin/python

import subprocess
import os

cmd =  'python --version'
stdout = subprocess.Popen(cmd, shell = True, stdout = subprocess.PIPE).stdout
ver = stdout.read()

这段代码只是在控制台上打印python版本,而变量ver没有得到任何值.
谁能帮助我理解为什么这不起作用?

我有类似的代码,我正在检查进程是否在节点上运行.

cmd =  'ps -ef | grep cmserver | grep -v grep'
stdout = subprocess.Popen(cmd, shell = True, stdout = subprocess.PIPE).stdout
cmserver = stdout.read()

在这里,屏幕上没有打印任何内容,变量cmserver具有所需的值.

解决方法:

这是因为Python将版本字符串输出到stderr而不是stdout.所以,修复是次要的:

process = subprocess.Popen(cmd, shell = True,
                           stdout = subprocess.PIPE,
                           stderr = subprocess.PIPE)
version = process.stderr.read()

但正如@polku所说,这种解决方案有点像kludgy.获得版本的更直接的Python语言机制会更好,例如他/她提到的那个.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐