我正在Python 3.4.3中编写一个安装过程,如果没有安装所需的程序版本(当然需要用户许可),该过程将安装Java和MySQL。目前我只为Windows做这件事。稍后还会推出其他操作系统。我使用命令:java-version和mysql-version来检查它们是否安装正确(即它们在PATH环境中)。我遇到的问题是,在安装Java和MySQL之后,当前的命令提示符不知道更新的PATH环境。正因为如此,我实现了这个代码:
import subprocess
output = subprocess.Popen("start cmd.exe /C "java -version ",
stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
这解决了这个问题。然而,我想检查这些命令的输出,这样我就可以检查以确保Java和MySQL安装正确,并且使用了正确的版本。当我尝试检查stdout或stderr时,它们是空的。我相信这是因为这些输出是"启动"的,而不是java版本的。有没有一种方法可以将java版本的输出重定向到原始命令提示符?或者有没有办法访问"启动"打开的命令提示符的输出?我尝试过将stderr重定向到stdout(即2>&1),但我真的认为这没有帮助。
import subprocess
output = subprocess.check_output(["java","-version"])
print(output)
输出:
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)