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

got IOERROR: No such file or directory : "./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 に答える