In meinem Programm möchte ich simplejson oder json importieren, je nachdem, ob das Betriebssystem des Benutzers Windows oder Linux ist. Ich nehme den Betriebssystemnamen als Eingabe vom Benutzer. Ist es nun richtig, Folgendes zu tun?
osys = raw_input("Press w for windows,l for linux")
if (osys == "w"):
import json as simplejson
else:
import simplejson
platform.platform()
oderplatform.system()
sollte das tun, was Sie brauchen, anstatt dass ein Benutzer jedes Mal etwas eingeben muss, wenn der Code ausgeführt wird.Antworten:
Ich habe gesehen, dass diese Redewendung häufig verwendet wird, sodass Sie nicht einmal am Betriebssystem schnüffeln müssen:
quelle
simplejson as json
da es sich wahrscheinlich um eine neuere (schnellere) Version des Standardmoduls handeltjson
.ujson
für GeschwindigkeitUm die Frage in Ihrem Titel zu beantworten, aber nicht den speziellen Fall, den Sie angeben, ist es vollkommen richtig, Tonnen von Paketen tun dies. Es ist wahrscheinlich besser, das Betriebssystem selbst herauszufinden, als sich auf den Benutzer zu verlassen. Hier ist pySerial als Beispiel.
serial/__init__.py
Dies sollte nur in Fällen verwendet werden, in denen Sie davon ausgehen und eine starke Garantie dafür benötigen, dass bestimmte Schnittstellen / Funktionen vorhanden sind: z. B. eine aufgerufene 'Datei'
/dev/ttyX
. In Ihrem Fall: Wenn Sie sich mit JSON befassen, gibt es nichts, was tatsächlich betriebssystemspezifisch ist, und Sie überprüfen nur, ob das Paket vorhanden ist oder nicht. In diesem Fall nurtry
, um es zu importieren und mit einemexcept
Fallback zurückzugreifen, wenn es fehlschlägt:quelle
simplejson
oderjson
nicht. Sie zitieren Code aus inhärent betriebssystemspezifischen Importen, was ein ganz anderer Fall ist. Siehe Matts Antwort für den richtigen Ansatz.json
Paket noch nie verwendet und versucht, die allgemeinere Frage "Können Sie bedingte Importe von Modulen durchführen?" Zu beantworten.Es ist nicht ratsam, json oder simplejson an die Betriebssystemplattform zu binden. simplejson ist eine neuere und erweiterte Version von json, daher sollten wir zuerst versuchen, sie zu importieren.
Basierend auf der Python-Version können Sie unten versuchen, json oder simplejson zu importieren
quelle