Başlığınızdaki soruyu cevaplamak, ancak sağladığınız özel durum için değil, çok doğru, tonlarca paket bunu yapıyor. Kullanıcıya güvenmek yerine işletim sistemini kendiniz bulmak muhtemelen daha iyidir; İşte pySerial bunu örnek olarak yapıyor.
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
)
)
Bu, yalnızca belirli arayüzlerin / özelliklerin orada olacağını varsaydığınız ve güçlü bir garantiye ihtiyaç duyduğunuz durumlarda kullanılmalıdır: örneğin bir 'dosya' denir /dev/ttyX. Sizin durumunuzda: JSON ile uğraşırken, aslında işletim sistemine özgü bir şey yoktur ve yalnızca paketin var olup olmadığını kontrol edersiniz. Bu durumda, sadece tryiçe aktarmak ve exceptbaşarısız olursa bir geri çekilmek için :
try:
import some_specific_json_module as json
except ImportError:
import json
platform.platform()veyaplatform.system()bir kod her çalıştığında bir kullanıcının bir şey girmesi yerine ihtiyacınız olanı yapmalıdır.