我正在构建一个具有以下目录结构的包 -
terraai_preprocessing
|setup.py
||MANIFEST.in
|terraai_preprocessing
|__init__.py
|combinatorics
|preprocessing
|__init__.py
|config.json
|pp_main.py
|pp_helpers.py
我正在尝试使用pkg_resources将config.json加载到pp_helpers.py中,如其他类似问题所述。我确信该文件存在,因为 -
>>print resource_exists('terraai_preprocessing.preprocessing', 'config.json')
>>True
我尝试使用以下内容但最终出现错误,
>>with open(resource_filename('terraai_preprocessing.preprocessing', 'config.json'),'r') as f:
config = json.load(f)
ValueError: No JSON object could be decoded
>>config = json.loads(resource_filename('terraai_preprocessing.preprocessing', 'config.json'))
ValueError: No JSON object could be decoded
>>config = json.loads(resource_stream('terraai_preprocessing.preprocessing', 'config.json'))
enter code here
>>config = json.loads(resource_string('terraai_preprocessing.preprocessing', 'config.json'))
ValueError: No JSON object could be decoded
我做错了什么
答案 0 :(得分:2)
必须如下:
with open('data.json', encoding='utf-8') as data_file:
data = json.loads(data_file.read())
所以在你的情况下
config = json.loads(f.read())
答案 1 :(得分:0)
Python无法找到该文件,因为函数resource_filename()
返回带有\\
的地址作为分隔符。将\\
替换为/
,就可以找到该文件。
所以我使用了以下代码 -
>> file_location = resource_filename('terraai_preprocessing.preprocessing','config.json').replace('\\',"/")
>> with open(file_location,'r') as f:
config = json.load(f)