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

相關問題