Насколько я знаю, у 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
, поэтому этот вопрос не является особо срочным, но я был бы очень признателен за некоторые разъяснения относительно этого.