386 Stimmen

Wie führt man eine Datei innerhalb des Python-Interpreters aus?

Ich versuche, eine Datei mit Python-Befehlen aus dem Interpreter heraus auszuführen.

EDIT: Ich versuche, Variablen und Einstellungen aus dieser Datei zu verwenden, nicht einen separaten Prozess aufzurufen.

335voto

S.Lott Punkte 371691

Mehrere Möglichkeiten.

  • Aus der Schale

    python someFile.py
  • Drücken Sie im IDLE-Modus F5 .

  • Wenn Sie interaktiv tippen, versuchen Sie dies ( Python3 ):

    >>> exec(open("filename.py").read())
  • Für Python 2:

    >>> variables= {}
    >>> execfile( "someFile.py", variables )
    >>> print variables # globals from the someFile module

276voto

codeape Punkte 93809

Für Python 2:

>>> execfile('filename.py')

Für Python 3:

>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())

Voir die Dokumentation . Wenn Sie Python 3.0 verwenden, siehe diese Frage .

In der Antwort von @S.Lott finden Sie ein Beispiel dafür, wie Sie nach der Ausführung von filename.py auf Globals zugreifen.

112voto

Waylon Flinn Punkte 19361

Python 2 + Python 3

exec(open("./path/to/script.py").read(), globals())

Dies führt ein Skript aus und setzt alle seine globalen Variablen in den globalen Bereich des Interpreters (das normale Verhalten in den meisten Skriptumgebungen).

Python 3 exec Dokumentation

80voto

Bennett Talpers Punkte 662

Ich bin überrascht, dass ich das noch nicht gesehen habe. Sie können eine Datei ausführen und dann den Interpreter nach Beendigung der Ausführung offen lassen, indem Sie die -i Option:

| foo.py |
----------
testvar = 10

def bar(bing):
  return bing*3

--------

$ python -i foo.py
>>> testvar 
10
>>> bar(6)
18

32voto

mikl Punkte 22841

Ich versuche, Variablen und Einstellungen aus dieser Datei zu verwenden, nicht einen separaten Prozess aufzurufen.

Nun, das einfache Importieren der Datei mit import filename (minus .py, muss im selben Verzeichnis oder auf Ihrem PYTHONPATH ) führt die Datei aus und macht ihre Variablen, Funktionen, Klassen usw. in der filename.variable Namensraum.

Wenn Sie also cheddar.py mit der Variablen spam und der Funktion eggs - Sie können sie mit import cheddar greifen Sie auf die Variable mit cheddar.spam und führen Sie die Funktion aus, indem Sie cheddar.eggs()

Wenn Sie Code in cheddar.py die sich außerhalb einer Funktion befindet, wird sie sofort ausgeführt, aber wenn Sie Anwendungen erstellen, die Dinge beim Import ausführen, wird es schwierig, Ihren Code wiederzuverwenden. Wenn möglich, sollten Sie alles in Funktionen oder Klassen unterbringen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X