在另一个文件中导入类后,未找到Python文件错误

时间:2017-11-08 01:41:13

标签: flask

好的,我的项目中只有一个python文件,只有这个类:

class hd_XML():
    def __init__(self):
        self.path = 'static/XML/current/'
        self.filename = 'current_settings.xml'
        self.tree = ''

    def open(self):
        self.tree = ET.parse(self.path + self.filename)
        self.root = self.tree.getroot()
        return self.root

    def get_data(self):
        self.root = self.open()
        canale = Channel
        canali = []
        i = 0
        for child in self.root:
            canale.id = child.attrib['id']
            canale.max = child.attrib['max']
            canale.color = child.attrib['color']
            canali.append(canale)
            i += 1
        return canali

如果我使用以下单独运行此类:

if __name__ == '__main__':
    xml = hd_XML()
    print(xml.get_data())

有效。但是,如果我在我的主应用程序文件中导入此类,如下所示,

import hd_modXML #thats my separate file name

xml = hd_modXML.hd_XML()
canali = xml.get_data()
print(canali[0].id)

我无法检索文件......

FileNotFoundError: [Errno 2] No such file or directory: 'static/XML/current/current_settings.xml'

为什么?我可以找到一个独立的文件,导入后我就可以了吗?

项目结构:

main folder <--- where app.py (where is included hd_modXML.py) and hd_modXML.py are
 |_static
   |_XML
     |_current\ <-- where current_settings.xml is
 |_templates

1 个答案:

答案 0 :(得分:0)

经过一些尝试后,我发现它可以为解析器提供从root开始的整个目录路径,所以在我的情况下:

self.path = '/home/grace/pyDev/prova_horus2/static/XML/current/'

我不知道为什么使用prievious版本它没有...

现在我需要一种方法来避免硬编码根路径,但为此我可以帮助自己。 非常感谢yklsga指出我正确的方式