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.

  1. Ein Objekt kann ein String oder ein mehrzeiliger Code sein.
  2. Ein globaler Parameter kann ein Wörterbuch sein.
  3. Ein local kann 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