No meu programa, quero importar simplejson ou json com base em se o sistema operacional em que o usuário está é Windows ou Linux. Eu pego o nome do sistema operacional como entrada do usuário. Agora, é correto fazer o seguinte?
osys = raw_input("Press w for windows,l for linux")
if (osys == "w"):
import json as simplejson
else:
import simplejson
platform.platform()
ouplatform.system()
deve fazer o que você precisa, em vez de ter que um usuário precisar inserir algo toda vez que o código for executado.Respostas:
Eu já vi esse idioma usado muito, então você nem precisa cheirar o SO:
fonte
simplejson as json
, pois é provável que seja uma versão mais nova (mais rápida) dojson
módulo padrão .ujson
para velocidadePara responder à pergunta em seu título, mas não no caso específico que você fornece, é perfeitamente correto, toneladas de pacotes fazem isso. Provavelmente é melhor descobrir você mesmo em vez de confiar no usuário; aqui está pySerial fazendo isso como um exemplo.
serial/__init__.py
Isso deve ser usado apenas nos casos em que você está assumindo e precisa de uma garantia forte de que certas interfaces / recursos estarão lá: por exemplo, um 'arquivo' chamado
/dev/ttyX
. No seu caso: lidando com JSON, não há nada que seja realmente específico do sistema operacional e você está apenas verificando se o pacote existe ou não. Nesse caso, apenastry
para importá-lo e retorne com umexcept
se falhar:fonte
simplejson
ou nãojson
. Você está citando código de importações inerentemente específicas do SO , que é um caso muito diferente. Veja a resposta de Matt para a abordagem correta.json
pacote e estava tentando responder à pergunta mais geral "você pode fazer importações condicionais de módulos"?Não é aconselhável usar para vincular json ou simplejson à plataforma do SO. simplejson é a versão mais recente e avançada do json, portanto, devemos tentar importá-lo primeiro.
Baseado na versão python, você pode tentar abaixo o caminho para importar json ou simplejson
fonte