问题描述
我正在寻找使用 Python 脚本的 Windows 版本。我需要将版本输出到一个变量,以便我可以根据 Windows 版本执行命令。到目前为止,我在 python 中有这段代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wmi
import wx
conn = wmi.WMI()
app = wx.App()
for caption in conn.Win32_OperatingSystem():
print("\nOS:",caption.Caption)
if caption.Caption == 'Microsoft Windows 7 Enterprise':
print("Wrong Windows version")
if caption.Caption == 'Microsoft Windows 10 Enterprise':
print("This is the correct Windows version")
wx.MessageBox(f'OS Version: {caption.Caption}','Operating System',wx.OK | wx.ICON_informatION)
我使用 autopy 打包了这段代码,它在 Win10 上正确运行并分配了输出。当我在 Win7 上运行相同的包时,它不会在 Windows 7 的“if”语句中返回任何内容。我使用 Python 3.8 和 wxPython 4.0.7 都让我在 Win10 或 Win7 上作为 exe 运行没有问题。我只需要它在 Windows 7“错误的 Windows 版本”上输出,所以我知道语句是否在 Win7 上工作。
解决方法
为了让 Wmi32 输出字符串在 Win7 设备上正确分配变量,您需要更改
if caption.Caption == 'Microsoft Windows 7 Enterprise':
print("Wrong Windows version")
到
if caption.Caption == 'Microsoft Windows 7 Enterprise ':
print("Wrong Windows version")
您需要在 Enterprise 之后添加一个额外的空间。这解决了我的问题。现在脚本将在 Win10 和 Win7 中运行 if 语句。 https://www.jonathanmedd.net/2012/02/wmi-class-win32_operatingsystem-caption-property-may-contain-a-trailing-space.html