Обнаружение версии Windows в Python не работает
Я встраиваю компонент в скрипт Python 2.7, который определяет, на какой версии Windows работает скрипт. Я нашел хорошее решение, расположенное здесь, в другом сообщении о переполнении стека, которое показалось довольно простым и соответствовало моим потребностям (очевидно, я использовал второй ответ). К сожалению, это не похоже на работу. Я пробовал этот сценарий на двух системах (32-битная Win7 и 64-битная Win7), и он каждый раз выводит мой оператор 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
Заранее спасибо!
1 ответ
Хотя sys_info_raw
при печати выглядит как строка, ее тип на самом деле <type 'sys.getwindowsversion'>
что, видимо, не относится к in
оператор так же, как это делает тип str. Попробуйте выполнить явное преобразование в строку перед выполнением проверки.
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!