अपने शीर्षक में प्रश्न का उत्तर देने के लिए लेकिन आपके द्वारा प्रदान किया गया विशेष मामला नहीं, यह पूरी तरह से सही है, टन के पैकेज ऐसा करते हैं। उपयोगकर्ता पर भरोसा करने के बजाय खुद ओएस का पता लगाना बेहतर है; यहाँ एक उदाहरण के रूप में कर रही है।
serial/__init__.py
import sys
if sys.platform == 'cli':
from serial.serialcli import Serial
else:
import os
# chose an implementation, depending on os
if os.name == 'nt': # sys.platform == 'win32':
from serial.serialwin32 import Serial
elif os.name == 'posix':
from serial.serialposix import Serial, PosixPollSerial, VTIMESerial # noqa
elif os.name == 'java':
from serial.serialjava import Serial
else:
raise ImportError(
"Sorry: no implementation for your platform ('{}') available".format(
os.name
)
)
यह केवल उन मामलों में उपयोग किया जाना चाहिए जहां आप मान रहे हैं और एक मजबूत गारंटी की आवश्यकता है कि कुछ इंटरफेस / सुविधाएँ होंगी: उदाहरण के लिए 'फ़ाइल' नामक /dev/ttyX। आपके मामले में: JSON से निपटना, वास्तव में OS- विशिष्ट कुछ भी नहीं है और आप केवल जाँच कर रहे हैं कि पैकेज मौजूद है या नहीं। उस मामले में, बस tryइसे आयात करने के लिए, और exceptअगर यह विफल रहता है, तो वापस आना चाहिए:
try:
import some_specific_json_module as json
except ImportError:
import json
platform.platform()याplatform.system()उपयोगकर्ता को कोड चलाने के दौरान हर बार कुछ इनपुट करने की बजाय ऐसा करना चाहिए जो आपको चाहिए।