我可以在命令行中获取版本,但是如何将其存储在变量中:
In [28]: if subprocess.call('mongo --version', shell = True) == '':
....: print 'Not installed'
....: else:
print 'Already installed'
....: print subprocess.call('mongo --version', shell = True)
....:
MongoDB shell version: 2.6.1
MongoDB shell version: 2.6.1
0
是否可以只检索版本值,将其存储在变量中?
v = subprocess.call('mongo --version', shell = True)
?
答案 0 :(得分:3)
subprocess.check_call
返回命令的返回码。
使用subprocess.check_output
将命令输出重新命名为字节串:
try:
output = subprocess.check_output(['mongo', '--version'])
version = output.split()[-1] # get the last word: version
except (OSError, subprocess. CalledProcessError):
version = None
您需要捕获异常OSError
(如果找不到命令,子进程将引发异常),CalledProcessError
(如果命令未成功运行,则会引发异常)。
答案 1 :(得分:0)
执行mongo --version
您将获得mongodb 客户端版本,而不是数据库引擎版本,但我不确定您真正想要的是什么。
如果安装了Python驱动程序PyMongo
,则可以使用以下命令获取数据库引擎版本:
from pymongo import MongoClient
client = MongoClient(host=host, port=port)
print client.server_info()['version']