从另一个路径导入模块导致IOERROR:没有这样的文件或目录

时间:2013-03-20 18:00:52

标签: python

这是我目录的直观表示:

enter image description here

这是test1.py

的代码段
....
def foo():
    f=read("./test1.dat","r")
....

这是test2.py

的代码
import imp

TEST1 = imp.load_source('test1', '../test1.py')


def test2():
    TEST1.foo()

运行test2.py

cd subdir
python test2.py

得到了IOERROR:否这样的文件或目录:“。/ test1.dat”

我的问题是:

如果我不更改目录的结构,例如将test2.py移动到其父目录,是否可以让模块test1在模块test2中调用它时找到正确的文件?

1 个答案:

答案 0 :(得分:0)

这将为您提供已加载模块的路径:

import a_module
print a_module.__file__

获取模块的目录:

import os, a_module
path = os.path.dirname(a_module.__file__)

总而言之,如果您正在寻找相对于另一个模块的文件,我会使用这种方法:

来自test1.py

def foo(path):
    f=read(path,"r")

来自test2.py

import os, test1
path = os.path.dirname(test1.__file__)
test1.foo(path + "/test1.dat")