Ich versuche, eine Datei mit Python-Befehlen aus dem Interpreter heraus auszuführen.
BEARBEITEN: Ich versuche, Variablen und Einstellungen aus dieser Datei zu verwenden, um keinen separaten Prozess aufzurufen.
Ich versuche, eine Datei mit Python-Befehlen aus dem Interpreter heraus auszuführen.
BEARBEITEN: Ich versuche, Variablen und Einstellungen aus dieser Datei zu verwenden, um keinen separaten Prozess aufzurufen.
Antworten:
Verschiedene Wege.
Aus der Schale
python someFile.py
Drücken Sie im Leerlauf F5 .
Wenn Sie interaktiv tippen, versuchen Sie Folgendes: ( Nur Python 2 !)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
Verwenden Sie für Python3 :
>>> exec(open("filename.py").read())
pythonfunktioniert nicht, wenn Sie Python 3 ausführen, python3wird stattdessen verwendet.
stdinaus einer Datei wie mit <dem ausführenden Skript in der execfile(). bereitzustellen ? @ s-lott
pythonPunkte zu python3.
pythonausführbare Datei das System beim Durchsuchen der Ordner in der Umgebungsvariablen findet PATH.
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, lesen Sie diese Frage .
In der Antwort von @ S.Lott finden Sie ein Beispiel dafür, wie Sie nach der Ausführung von Dateiname.py auf Globals zugreifen.
exec(open("./path/to/script.py").read(), globals())
Dadurch wird ein Skript ausgeführt und alle globalen Variablen in den globalen Bereich des Interpreters eingefügt (das normale Verhalten in den meisten Skriptumgebungen).
opender Code direkt aus dem Skript gelesen wird. Um Argumente zu übergeben, schauen Sie sich diese Antwort an , aber verwenden Sie stattdessen execfileoffensichtlich execund openwie oben gezeigt.
Überrascht habe ich das noch nicht gesehen. Sie können eine Datei ausführen und den Interpreter nach Beendigung der Ausführung offen lassen, indem Sie die folgende -iOption verwenden:
| 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, um keinen separaten Prozess aufzurufen.
Wenn Sie die Datei einfach mit import filename(minus .py, muss sich im selben Verzeichnis oder in Ihrem Verzeichnis befinden PYTHONPATH) importieren , wird die Datei ausgeführt und ihre Variablen, Funktionen, Klassen usw. werden im filename.variableNamespace verfügbar gemacht .
Wenn Sie also cheddar.pymit der Variablen Spam und der Funktion Eier haben - Sie können sie mit importieren import cheddar, auf die Variable mit zugreifen cheddar.spamund die Funktion durch Aufrufen ausführencheddar.eggs()
Wenn Sie Code cheddar.pyaußerhalb einer Funktion haben, wird dieser sofort ausgeführt, aber das Erstellen von Anwendungen, die beim Import ausgeführt werden, erschwert die Wiederverwendung Ihres Codes. Wenn alles möglich ist, fügen Sie alles in Funktionen oder Klassen ein.
from filename import *
Aus meiner Sicht ist der beste Weg:
import yourfile
und nach dem Ändern von yourfile.py
reload(yourfile)
oder
import imp;
imp.reload(yourfile) in python3
Dadurch sehen die Funktion und die Klassen jedoch folgendermaßen aus: yourfile.function1, yourfile.class1 .....
Wenn Sie diese nicht akzeptieren können, lautet die endgültige Lösung:
reload(yourfile)
from yourfile import *
Ich bin kein Experte, aber Folgendes ist mir aufgefallen:
Wenn Ihr Code beispielsweise mycode.py ist und Sie nur 'mycode importieren' eingeben, führt Python ihn aus, stellt dem Interpreter jedoch nicht alle Variablen zur Verfügung. Ich fand, dass Sie tatsächlich 'from mycode import *' eingeben sollten, wenn Sie dem Interpreter alle Variablen zur Verfügung stellen möchten.
Mach einfach,
from my_file import *
Stellen Sie sicher, dass Sie keine .py-Erweiterung hinzufügen. Wenn Ihre .py-Datei im Unterverzeichnis verwendet wird,
from my_dir.my_file import *
Für Python 3:
>>> exec(open("helloworld.py").read())
Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden, bevor Sie den Befehl ausführen.
Um eine Datei aus einem anderen Verzeichnis auszuführen, können Sie den folgenden Befehl verwenden:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
Angenommen, Sie möchten die folgenden Funktionen:
__name__ == '__main__' ist True, daher verhalten sich Skripte ordnungsgemäß wie Skripte.Die exec(open('foo.py').read())Fehlerfunktion 1 Die import fooStrategie schlägt die Funktion 2 fehl
Um beides zu bekommen, benötigen Sie Folgendes:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)