जहाँ तक मुझे पता है, पायथन के पास यह पता लगाने के 3 तरीके हैं कि ऑपरेटिंग सिस्टम क्या चल रहा है:
os.name
sys.platform
platform.system()
यह जानकारी जानना अक्सर सशर्त आयातों में उपयोगी है, या कार्यक्षमता का उपयोग करना जो प्लेटफार्मों के बीच भिन्न होता है (जैसे time.clock()
विंडोज बनाम time.time()
यूनिक्स पर)।
मेरा सवाल है, ऐसा करने के 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'
भविष्य संगतता के लिए