En mi programa quiero importar simplejson o json en función de si el sistema operativo en el que se encuentra el usuario es Windows o Linux. Tomo el nombre del sistema operativo como entrada del usuario. Ahora, ¿es correcto hacer lo siguiente?
osys = raw_input("Press w for windows,l for linux")
if (osys == "w"):
import json as simplejson
else:
import simplejson
platform.platform()
oplatform.system()
debe hacer lo que necesita, en lugar de que un usuario tenga que ingresar algo cada vez que se ejecuta el código.Respuestas:
He visto que esta expresión idiomática se usa mucho, por lo que ni siquiera tiene que rastrear el sistema operativo:
fuente
simplejson as json
ya que es probable que sea una versión más nueva (más rápida) deljson
módulo estándar .ujson
por velocidadPara responder la pregunta en su título, pero no el caso particular que proporciona, es perfectamente correcto, toneladas de paquetes hacen esto. Probablemente sea mejor averiguar el sistema operativo usted mismo en lugar de confiar en el usuario; Aquí está PySerial haciéndolo como ejemplo.
serial/__init__.py
Esto solo debe usarse en casos en los que está asumiendo y necesita una garantía sólida de que ciertas interfaces / características estarán allí: por ejemplo, un 'archivo' llamado
/dev/ttyX
. En su caso: al tratar con JSON, no hay nada que sea realmente específico del sistema operativo y solo está verificando si el paquete existe o no. En ese caso, solotry
para importarlo, y recurrir con unexcept
si falla:fuente
simplejson
o nojson
. Está citando código de importaciones inherentemente específicas del sistema operativo , que es un caso muy diferente. Vea la respuesta de Matt para el enfoque correcto.json
paquete y estaba tratando de responder la pregunta más general "¿puedes hacer importaciones condicionales de módulos?".No es aconsejable usar para enlazar json o simplejson con la plataforma del sistema operativo. simplejson es la versión más nueva y avanzada de json, por lo que deberíamos intentar importarlo primero.
Según la versión de Python, puede probar a continuación la forma de importar json o simplejson
fuente