在包类中加载文件,导入时没有包

时间:2018-04-06 19:29:53

标签: python python-3.x

这是我的问题,我创建了一个包含一个类的包,这个是一个单词解析器,在这个包中我创建了一个包含单词列表的json。该文件名为fr.json

问题在于,当我使用命令from bin.Parser.parser import Parser导入类并创建解析器对象时,它会将文件加载到我导入类的文件夹中,而不是加载到类所在的包中。

我可以使用" os.path"指定方向,但是,如果我想移动我的包并将其重新用于另一个项目,我有义务再次指定从哪里开始的链接" fr上传.json"位于。

class Parser:
    def __init__(self, language):
        self.language = language + ".json"
        words_and_caracters = json.load(open('self.language'))
        self.LIST_WORD = words_and_caracters["LIST_WORD"]
        self.LIST_CARACTER = words_and_caracters["LIST_CARACTER"]
    ....

树形结构:

├── Parser
│   ├── fr.json
│   ├── __init__.py
│   ├── parser.py
├── test.py 

导入测试:

from Parser.parser import Parser

parser = Parser('fr')

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码段。它生成包含程序包的目录的路径(动态),然后附加文件名。

import os    
class Parser:
    def __init__(self, language):
        file_dir_path = os.path.dirname(os.path.abspath(__file__))
        self.language = os.path.join(file_dir_path, "{}.json".format(language))
        words_and_caracters = json.load(open('self.language'))
        self.LIST_WORD = words_and_caracters["LIST_WORD"]
        self.LIST_CARACTER = words_and_caracters["LIST_CARACTER"]