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