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 um einen separaten Prozess aufzurufen.
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())
Siehe die Dokumentation. Wenn Sie Python 3.0 verwenden, siehe diese Frage.
Siehe Antwort von @S.Lott für ein Beispiel, wie Sie nach der Ausführung von filename.py auf Globals zugreifen.
Mehrere Möglichkeiten.
Aus der Hülle
python someFile.py
Drücken Sie im IDLE-Modus F5.
Wenn Sie interaktiv tippen, versuchen Sie dies: (Nur Python 2!)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
Für Python3, verwenden Sie:
>>> exec(open("filename.py").read())
exec(open("./path/to/script.py").read(), globals())
Dadurch wird ein Skript ausgeführt und alle globalen Variablen des Skripts in den globalen Bereich des Interpreters gelegt (das normale Verhalten in den meisten Skriptumgebungen).
Ich bin überrascht, dass ich das noch nicht gesehen habe't
Sie können eine Datei ausführen und dann den Interpreter nach Beendigung der Ausführung mit der Option -i
offen lassen:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
Ich versuche, Variablen und Einstellungen aus dieser Datei zu verwenden, und nicht, einen separaten Prozess aufzurufen.
Nun, das einfache Importieren der Datei mit import filename
(minus .py, muss im gleichen Verzeichnis oder im PYTHONPATH
sein) wird die Datei ausführen und ihre Variablen, Funktionen, Klassen, etc. im filename.variable
Namensraum verfügbar machen.
Wenn Sie also cheddar.py
mit der Variable spam und der Funktion eggs haben - können Sie sie mit import cheddar
importieren, auf die Variable mit cheddar.spam
zugreifen und die Funktion durch den Aufruf von cheddar.eggs()
ausführen.
Wenn Sie Code in cheddar.py
haben, der sich außerhalb einer Funktion befindet, wird er sofort ausgeführt, aber wenn Sie Anwendungen bauen, die Dinge beim Importieren ausführen, wird es schwierig, Ihren Code wiederzuverwenden. Wenn möglich, sollten Sie alles in Funktionen oder Klassen unterbringen.
Ich bin kein Experte, aber das ist es, was mir aufgefallen ist:
Wenn Ihr Code z.B. mycode.py ist und Sie nur 'import mycode' tippen, wird Python ihn ausführen, aber nicht alle Ihre Variablen dem Interpreter zur Verfügung stellen. Ich habe festgestellt, dass Sie eigentlich 'from mycode import *'tippen sollten; tippen, wenn Sie dem Interpreter alle Variablen zur Verfügung stellen wollen.
Aus meiner Sicht ist der beste Weg:
import yourfile
und nach der Änderung von yourfile.py
reload(yourfile)
oder
import imp;
imp.reload(yourfile) in python3
aber das wird die Funktion und die Klassen so aussehen lassen: deinedatei.funktion1, deinedatei.klasse1......
Wenn Sie diese nicht akzeptieren können, die endgültige Lösung ist:
reload(yourfile)
from yourfile import *
Für python3 verwenden Sie entweder mit xxxx = Name
Ihrer Datei.
exec(open('./xxxx.py').read())
Für Python 3:
>>> exec(open("helloworld.py").read())
Stellen Sie sicher, dass sich you'im richtigen Verzeichnis befindet, bevor Sie den Befehl ausführen.
Um eine Datei aus einem anderen Verzeichnis auszuführen, können Sie den unten stehenden Befehl verwenden:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
Tun Sie es einfach,
from my_file import *
Stellen Sie sicher, dass Sie nicht die Erweiterung .py hinzufügen. Wenn Ihre .py-Datei im Unterverzeichnis verwenden,
from my_dir.my_file import *