Насколько я знаю, у Python есть 3 способа выяснить, на что работает операционная система:
-
os.name -
sys.platform -
platform.system()
Знание этой информации часто полезно при условном импорте или использовании функциональных возможностей, которые различаются между платформами (например, time.clock() в Windows vs .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, поэтому этот вопрос не является особо срочным, но я был бы очень признателен за некоторые разъяснения относительно этого.