Насколько мне известно, Python имеет 3 способа узнать, на какой операционной системе работает:
os.name
sys.platform
platform.system ()
Знание этой информации часто полезно при условном импорте или использовании функций, которые различаются между платформами (например, time.clock ()
в Windows против time.time ()
в UNIX).
У меня вопрос, почему это можно сделать тремя разными способами? Когда следует использовать один способ, а не другой? Какой способ является «лучшим» (наиболее перспективным или с наименьшей вероятностью случайно исключить конкретную систему, на которой действительно может работать ваша программа)?
Похоже, что sys.platform
более конкретен, чем os.name
, что позволяет отличать win32
от cygwin
(в отличие от просто nt
) и linux2
из Дарвина
(в отличие от просто posix
). Но если это так, то как насчет разницы между sys.platform
и platform.system ()
?
Например, что лучше, это:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
или это ? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Пока я буду придерживаться sys.platform
, так что этот вопрос не особенно актуален, но я был бы очень благодарен за некоторые разъяснения по этому поводу.