Ich erstelle Python-Dateien im Verlauf der Ausführung eines Python-Programms. Ich möchte dann diese Dateien importieren und Funktionen ausführen, die in ihnen definiert wurden. Die Dateien, die ich erstelle, werden nicht in meinen Pfadvariablen gespeichert und ich würde es lieber so behalten.Dynamisch erstellte Python-Dateien importieren
Ursprünglich habe ich die execFile(<script_path>)
Funktion aufgerufen und dann die durch Ausführen der Datei definierte Funktion aufgerufen. Dies hat als Nebeneffekt immer den if __name__ == "__main__"
Zustand, den ich mit meinem jetzigen Setup nicht haben kann.
Ich kann die generierten Dateien nicht ändern, weil ich bereits 100 von ihnen erstellt habe und sie nicht alle überarbeiten möchte. Ich kann nur die Datei ändern, die die generierten Dateien aufruft.
Im Grunde, was ich habe jetzt ...
#<c:\File.py>
def func(word):
print word
if __name__ == "__main__":
print "must only be called from command line"
#results in an error when called from CallingFunction.py
input = sys.argv[1]
#<CallingFunction.py>
#results in Main Condition being called
execFile("c:\\File.py")
func("hello world")
Ohne Bezug: Verwenden Sie niemals Backslashes für Dateinamen im Code. Schreibe "c: /file.py"; Es funktioniert in Windows und ist viel konsistenter für alles, was Pfade analysiert. –