我正在处理以下代码.
#!/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] 举报,一经查实,本站将立刻删除。