我将组件构建到Python 2.7脚本中,该脚本确定脚本运行的Windows版本。我找到了一个很好的解决方案来自另一个Stack Overflow帖子的here,它似乎非常简单并符合我的需求(显然,我使用了第二个答案)。不幸的是,它似乎没有起作用。我在两个系统(Win7 32位和Win7 64位)上尝试过这个脚本,每次都输出我的else语句。
这是我的输出:
Loaded os_version_detection function!
Detecting family of Windows...
Detected OS: Unknown!
sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1')
有人可以指出我失踪的东西。感觉修复应该非常简单(缺少字符,缺少语句,拼写错误等),但我似乎无法将手指放在上面。
这是我的代码:
def os_version_detection(started_by_function):
global os_version
global os_arch
# Determine what family of Windows is installed.
print("Loaded os_version_detection function!")
print("Detecting family of Windows...")
sys_info_raw = sys.getwindowsversion()
if 'major=6, minor=2' in sys_info_raw:
os_version = "Win8"
print("Detected OS: Windows 8/2012!")
elif 'major=6, minor=1' in sys_info_raw:
os_version = "Win7"
print("Detected OS: Windows 7/2008!")
elif 'major=6, minor=0' in sys_info_raw:
os_version = "WinVista"
print("Detected OS: Windows Vista!")
elif 'major=5, minor=2' in sys_info_raw:
os_version = "Win2003"
print("Detected OS: Windows 2003!")
elif 'major=5, minor=1' in sys_info_raw:
os_version = "WinXP"
print("Detected OS: Windows XP!")
else:
os_version = "Unknown"
print("Detected OS: Unknown!")
print sys_info_raw
提前致谢!
答案 0 :(得分:1)
虽然sys_info_raw
在打印时看起来像一个字符串,但它的类型实际上是<type 'sys.getwindowsversion'>
,这显然不会像str类型那样处理in
运算符。在执行检查之前尝试显式转换为字符串。
print("Loaded os_version_detection function!")
print("Detecting family of Windows...")
sys_info_raw = str(sys.getwindowsversion())
结果(在我的机器上):
Loaded os_version_detection function!
Detecting family of Windows...
Detected OS: Windows 7/2008!