有没有办法在python openfile中使用相对路径

我有一个具有以下结构的python项目:

my-project
│
├── data
│   └── en
├── src
│   └── lib 
│       └── app
│           └── funt
│               └── my_feature.py
│ 
│
│
│
│
├── tests 
│   ├── src 
│       └── lib 
│           └── app
│               └── funt
│                   └── __init__.py
│                   └── test_my_feature.py

my_feature.py包含以下内容:

import...

data_path = "../../../../data/"


def _retrieve_file(path):
    with open(path) as file:
        data = file.readlines()
    return data

class MyFeature:
    #some code

    def _initialise_dictionary(self):
        dictionary = _retrieve_file(data_path + "dictionary/en")
        #some more code

并且test_my_feature.py文件包含:

import...

class TestMyFeature(unittest.TestCase):

    def setUp(self):
        self.my_feature = MyFeature()
        self.my_feature._initialise_dictionary()

    def test_dictionary(self):
        #some code etc

运行测试时出现的问题:

FileNotFoundError:[错误2]没有这样的文件或目录:'../../../../data/dictionary/en'

问题:这是因为test_my_feature.py需要返回5个目录才能到达/ data /,而my_feature.py需要返回4个目录。如果我修复了一个,则另一个就坏了。有没有一种方法可以使用相对路径而不使用os.paths

有人可以用我的代码给我一个代码示例吗?我已经尝试了很多方法,但是找不到解决方案!

评论