2013-03-20 81 views
0

这是我的目录的可视化表示:导入模块:没有这样的文件或目录

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 

得到IO错误:没有这样的文件或目录:“./test1.dat”

我的问题是:

,如果我不改变目录的结构,例如移动TEST2 .py到它的父目录,是否有可能使模块test1在模块test2中调用时找到正确的文件?

+1

http://stackoverflow.com/questions/779495/python-access-data-in-package-subdirectory – 2013-03-20 18:07:42

+0

@redShadow,是的,我只可以读取父目录。 – camino 2013-03-20 18:10:02

回答

0

这会给你的路径加载一个模块:

import a_module 
print a_module.__file__ 

进入模块的目录:

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

全部放在一起,我会用这种方法如果你正在寻找相对于另一个模块的文件:

from 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") 
+0

谢谢,但在函数foo中,它没有输入参数 – camino 2013-03-20 18:29:17

+0

我认为用test1.py中的__file__替换相对路径应该更好。它似乎不是一个好主意,在Python模块中使用相对路径:) – camino 2013-03-20 18:39:42

相关问题