Windows Python 中的版本检测不工作
Windows version detection in Python not working
我正在将一个组件构建到 Python 2.7 脚本中,用于确定脚本 运行 在哪个版本的 Windows 上。我从另一个 Stack Overflow post 找到了位于 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
提前致谢!
虽然 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!
我正在将一个组件构建到 Python 2.7 脚本中,用于确定脚本 运行 在哪个版本的 Windows 上。我从另一个 Stack Overflow post 找到了位于 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
提前致谢!
虽然 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!