HOWTO · Python
Python-Namensfehler: Name der ausführbaren Datei ist nicht definiert
Dieses Tutorial demonstriert NameError: name execfile is not defined, seine Ursache und die Möglichkeit, diesen Fehler in Python 3 zu beheben.
Auf dieser Seite
In Python 2 gibt es eine eingebaute Funktion execfile(), in der eine Datei als Python-Anweisungen geparst und ausgewertet wird. Diese Funktion gibt es in Python 3 nicht mehr.
Dieser Artikel zeigt die mögliche Alternative zum Ausführen einer Datei in Python 3.
Alternative zu execfile() in Python 3
In Python 2 verwenden wir die Funktion execfile(), um eine Datei auszuführen. In Python 3 haben wir eine ähnliche Funktion namens exec().
Zuerst öffnen und lesen wir die Datei und übergeben sie als Argument an die Funktion exec().
die exec()-Funktion in Python 3
Die Python-Funktion exec() führt einen dynamisch erstellten Codeblock aus, der als Zeichenfolge übergeben wird.
Allgemeine Syntax:
# Python 3.x
exec(object, global, local)
Für die Funktion exec() werden drei Parameter benötigt.
- Ein
Objektkann ein String oder ein mehrzeiliger Code sein. - Ein
globalerParameter kann ein Wörterbuch sein. - Ein
localkann ein Zuordnungswörterbuch sein.
Sowohl die lokalen als auch die globalen Parameter sind optional. Auch die exec() ist eine void-Funktion und gibt keinen Wert zurück.
Der folgende Code demonstriert die grundlegende Funktionsweise dieser Funktion. Der String Programmieren macht Spass wird im folgenden Code ausgegeben.
Es werden drei mathematische Operationen durchgeführt und einzeln an die Funktion exec() übergeben.
Auf ähnliche Weise können wir einer Zeichenfolge mehrere Zeilen hinzufügen, und jede Zeile wird analysiert, als Python-Anweisung betrachtet und ausgeführt.
Beispielcode:
# Python 3.x
exec('print("programming is fun")')
exec('x=4; y=9; print("Multiplication:", x*y)')
w = 200
exec("print(w == 200)")
exec("print(w / 100)")
Ausgang:
programming is fun
Multiplication: 36
True
2.0
Verwenden Sie exec(), um eine Python-Datei auszuführen
Wenn wir nun eine externe Python-Datei in unserem Code ausführen wollen, müssen wir die Datei zuerst öffnen, lesen und als Argument an die Funktion exec() übergeben.
Hier haben wir in unserem relativen Verzeichnis eine Datei myfile.py erstellt, die den folgenden Code enthält.
# Python 3.x
print("Delftstack")
Um diese Datei in unserem Python-Code auszuführen, öffnen wir sie zuerst mit open(), lesen sie dann mit der Funktion read() und führen sie schließlich mit der Funktion exec() aus.
Beispielcode:
# Python 3.x
exec(open("myfile.py").read())
Ausgang:
Delftstack
Verwenden Sie den with-Block, um eine Python-Datei mit exec() auszuführen
Der with-Block schließt die Datei sicher (automatisch), wenn sie das Ende des Blocks erreicht, wodurch sichergestellt wird, dass keine der Dateien geöffnet bleibt.
Beispielcode:
# Python 3.x
with open("myfile.py", "r") as f:
exec(f.read())
Ausgang:
Delftstack