Python 为不同用途指定文件路径的最佳方法,无需为每个用途编写自定义路径

Python 为不同用途指定文件路径的最佳方法,无需为每个用途编写自定义路径,python,pytest,Python,Pytest,我有一个文件(dataset.json),需要从不同的位置(tests.py、相对导入和实际使用)访问它。我目前的文件结构与此类似: project_dir | + - module_1 | + - __init__.py + - abcd.py + - dataset.json + - xyz.py + - tests | + - tests_abcd.py 我试图

我有一个文件(
dataset.json
),需要从不同的位置(tests.py、相对导入和实际使用)访问它。我目前的文件结构与此类似:

project_dir
    |
    + - module_1
        |
        + - __init__.py
        + - abcd.py
        + - dataset.json
    + - xyz.py
    + - tests
        |
        + - tests_abcd.py
我试图解决的问题是能够从
abcd.py
读取
dataset.json
。当我从
xyz.py
tests\u abcd.py
导入
FileNotFoundError
时,由于路径不同,我得到一个
FileNotFoundError

我已经讨论了从这个文件中读取该文件的不同方法,但它不一定能解决我的问题。我也调查了这件事。这是有帮助的,但并没有完全解决问题


定义文件路径的最佳方式是什么?我不想为每个用例编写50种不同的访问此文件的方法,我想了解处理此类问题的最佳方法。

Inside
abcd.py

from pathlib import Path
import json


def read_data():
    with open(Path(__file__).parent / 'dataset.json') as f:
        return json.load(f)
from module_1.abcd import read_data

my_data = read_data()
xyz.py

from pathlib import Path
import json


def read_data():
    with open(Path(__file__).parent / 'dataset.json') as f:
        return json.load(f)
from module_1.abcd import read_data

my_data = read_data()
当然,您不必返回数据,您可以在
abcd.py
中使用它


\uuuu文件\uuuu
是脚本计算的本地文件,因此
xyz.py
有自己的路径,您可以通过在文件名前面加上相同的父路径来打开它旁边的.json。

在每个文件夹级别创建一个空的init.py文件,现在您可以尝试从project_dir.module_1.dataset.json导入like,这将不起作用,因为运行
python xyz.py
会导致abcd在
project_dir
中搜索,而不是让module_1入睡,我将在上午对此进行研究。这里是凌晨3点:p