Dans mon programme, je souhaite importer simplejson ou json selon que le système d'exploitation sur lequel l'utilisateur se trouve est Windows ou Linux. Je prends le nom du système d'exploitation comme entrée de l'utilisateur. Maintenant, est-il correct de faire ce qui suit?
osys = raw_input("Press w for windows,l for linux")
if (osys == "w"):
import json as simplejson
else:
import simplejson
platform.platform()
ouplatform.system()
devrait faire ce dont vous avez besoin, plutôt que d'avoir un utilisateur à saisir quelque chose à chaque fois que le code est exécuté.Réponses:
J'ai beaucoup vu cet idiome utilisé, donc vous n'avez même pas besoin de renifler le système d'exploitation:
la source
simplejson as json
car il s'agit probablement d'une version plus récente (plus rapide) dujson
module standard .ujson
pour la vitessePour répondre à la question dans votre titre mais pas au cas particulier que vous fournissez, c'est parfaitement correct, des tonnes de packages le font. Il est probablement préférable de déterminer vous-même le système d'exploitation au lieu de vous fier à l'utilisateur; voici pySerial qui le fait à titre d'exemple.
serial/__init__.py
Cela ne devrait être utilisé que dans les cas où vous supposez et avez besoin d'une solide garantie que certaines interfaces / fonctionnalités seront là: par exemple, un 'fichier' appelé
/dev/ttyX
. Dans votre cas: en traitant avec JSON, il n'y a rien qui soit réellement spécifique au système d'exploitation et vous ne faites que vérifier si le package existe ou non. Dans ce cas, il suffittry
de l'importer et de revenir en arrière avec un enexcept
cas d'échec:la source
simplejson
oujson
est disponible. Vous citez du code d' importations intrinsèquement spécifiques au système d'exploitation , ce qui est un cas très différent. Voir la réponse de Matt pour la bonne approche.json
package et j'essayais de répondre à la question plus générale "pouvez-vous faire des importations conditionnelles de modules".Il n'est pas conseillé d'utiliser pour lier json ou simplejson avec la plate-forme OS. simplejson est une version plus récente et avancée de json, nous devrions donc essayer de l'importer en premier.
Basé sur la version python, vous pouvez essayer ci-dessous la manière d'importer json ou simplejson
la source