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