Насколько мне известно, у Python есть 3 способа узнать, на какой операционной системе работает:
os.namesys.platformplatform.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'для будущей совместимости