В моей программе я хочу импортировать simplejson или json в зависимости от того, в какой операционной системе используется пользователь: Windows или Linux. Я принимаю имя ОС в качестве ввода от пользователя. Теперь правильно ли делать следующее?
osys = raw_input("Press w for windows,l for linux")
if (osys == "w"):
import json as simplejson
else:
import simplejson
platform.platform()
илиplatform.system()
следует делать то, что вам нужно, вместо того, чтобы пользователь должен был что-то вводить при каждом запуске кода.Ответы:
Я видел, как эта идиома часто использовалась, так что вам даже не нужно анализировать ОС:
источник
simplejson as json
поскольку это, вероятно, более новая (более быстрая) версия стандартногоjson
модуля.ujson
для скоростиЧтобы ответить на вопрос в названии, но не в конкретном случае, который вы предоставляете, это совершенно правильно, тонны пакетов делают это. Вероятно, лучше выяснить ОС самостоятельно, чем полагаться на пользователя; Вот PySerial делает это в качестве примера.
serial/__init__.py
Это следует использовать только в тех случаях, когда вы предполагаете и нуждаетесь в серьезной гарантии того, что будут присутствовать определенные интерфейсы / функции: например, называется «файл»
/dev/ttyX
. В вашем случае: при работе с JSON нет ничего, что действительно зависит от ОС, и вы проверяете, существует ли пакет или нет. В этом случае простоtry
импортируйте его и используйте «except
если» не получится:источник
simplejson
илиjson
нет. Вы цитируете код от импорта, специфичного для ОС , а это совсем другой случай. См ответ Мэтта для правильного подхода.json
пакет и пытался ответить на более общий вопрос «Можете ли вы сделать условный импорт модулей».Не рекомендуется использовать для привязки json или simplejson к платформе ОС. simplejson - более новая и продвинутая версия json, поэтому мы должны сначала попытаться импортировать ее.
На основе Python версии вы можете попробовать ниже способ импортировать JSON или SimpleJSON
источник