0

这是我的目录的可视化表示:

在此处输入图像描述

这是来自 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 移动到其父目录,是否可以在模块 test2 中调用模块 test1 时找到正确的文件?

4

1 回答 1

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")
于 2013-03-20T18:04:47.490 回答