我有一个文件(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_abcd.py
导入abcd.py
时,我会得到一个FileNotFoundError
,因为路径不同。
我已经从这篇文章中介绍了阅读该文件的不同方法,但它并不一定能解决我的问题。我也研究了这篇文章。这个SO的帖子很有帮助,但并没有完全解决问题。
定义文件路径的最佳方式是什么?我不想为每个用例编写50种不同的访问该文件的方法,我想了解处理此类问题的最佳方法是什么。
内部abcd.py
:
from pathlib import Path
import json
def read_data():
with open(Path(__file__).parent / 'dataset.json') as f:
return json.load(f)
来自xyz.py
:
from module_1.abcd import read_data
my_data = read_data()
或者类似的东西,当然你不必返回数据,你可以在abcd.py
中使用它。
__file__
是评估它的脚本的本地,因此xyz.py
有自己的路径,您可以通过在文件名前面加上相同的父路径来打开它旁边的.json。