我正在为流行的 linux 版本(RHEL、opensuse、ubuntu 等)创建一个强化工具。我目前正在使用 zypper 包管理器在 OpenSUSE 环境中测试我的代码。
我有这段代码:
message = subprocess.Popen(["/usr/bin/zypper","-n","install","vlock"],
stdout=subprocess.PIPE,shell = False)
details = message.stdout.readlines()
print message.poll()
这将安装包,在本例中为 vlock,然后从 shell 读取输出,然后打印成功值,该值将是 0 或非零数字。当我在 python 解释器中运行这段代码时,我可以打印 message.poll() 或 echo $? 如果我在解释器之外运行命令,我得到一个 0 表示成功,或者一个非零表示失败。
但是,当我实际从 shell 运行完整的单元测试脚本时:
sudo ./pkghelper.py
我打印出 message.poll() 值,该值应该与打印 message.poll() 或 echo $?但是,我得到的值不是 0 或非零的整数,而是 None。有谁知道为什么python解释器中的值是整数而运行脚本时的值是None?!?!这实际上是程序继续开发的主要障碍,我可以在网上找到任何东西