具有相对路径的Python脚本不会在函数内运行

时间:2017-07-11 11:59:59

标签: python-3.x function

假设有这样的目录结构:

src\
    foo1.py
    Dir\
        foo2.py

当我在foo1.py中使用以下代码时,我在运行时没有问题:

import os
os.chdir("Dir")
exec(open("./foo2.py").read())
os.chdir("..")

但是当我改变它时:

import os
def test():
    os.chdir("Dir")
    exec(open("./foo2.py").read())
    os.chdir("..")

test()

错误诅咒:

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

我缺少什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

另一种解决方案是使用批处理脚本在主python文件中运行我的python文件。我做了一个这样的批处理文件:

runFoo2.bat

cd Dir
python.exe foo2.py
cd ..

然后改变了foo1.py以便:

foo1.py

from subprocess import call
def runFoo2():
    p = call("runFoo2.bat")

事后一切都很好。