Angenommen, führen Sie eine Verzeichnisstruktur wie folgt mit:Python-Skript mit relativen Pfaden nicht innerhalb von Funktionen
src\
foo1.py
Dir\
foo2.py
Wenn ich den folgenden Code in foo1.py verwenden, ich habe kein Problem beim Laufen:
import os
os.chdir("Dir")
exec(open("./foo2.py").read())
os.chdir("..")
Aber wenn ich änderte es dazu:
import os
def test():
os.chdir("Dir")
exec(open("./foo2.py").read())
os.chdir("..")
test()
Fehler accurs:
Traceback (most recent call last):
File "foo1.py", line 8, in <module>
test()
File "foo1.py", line 5, in test
exec(open("./foo2.py").read())
File "<string>", line 134, in <module>
NameError: name 'resistorLength' is not defined
Alles was ich vermisse?
Vielen Dank.
Könnte helfen zu wissen, was in 'foo2.py' ist. Könnte helfen, zu wissen, was Sie von 'open (" ./ foo2.py "). Read()' zurückgegeben bekommen. –
Wenn beide Python-Skripte sind, warum sollten sie über 'exec' laufen? Sie können einfach einen einfachen Import durchführen und die gewünschten Funktionen ausführen (siehe https://stackoverflow.com/questions/1186789/what-is-the-best-way-to-call-a-python-script- from-another-python-script) – Chris
@ScottHunter foo2.py ist eher eine lange Datei. aber die wichtigsten Befehle importieren eine Excel-Datei mit openpyxl-Modul und dann bearbeiten. Einige Dateikopien finden auch in den letzten Zeilen der Datei statt. – user179892