Насколько я знаю, в Python есть 3 способа узнать, на какой операционной системе выполняется:
os.name
sys.platform
platform.system()
Знание этой информации часто полезно при условном импорте или при использовании функций, которые различаются для разных платформ (например, time.clock()
в Windows v.s. time.time()
в UNIX).
Мой вопрос: почему 3 разных способа сделать это? Когда следует использовать один способ, а не другой? Какой путь является «наилучшим» (наиболее вероятным для будущего или наименее вероятным случайным образом исключить конкретную систему, на которой ваша программа может фактически работать)?
Кажется, что sys.platform
является более конкретным, чем os.name
, что позволяет вам отличать win32
от cygwin
(в отличие от nt
) и linux2
от darwin
(в отличие от просто 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
, поэтому этот вопрос не особо актуален, но я был бы очень признателен за разъяснения по этому поводу.