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