好的,我的项目中只有一个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
答案 0 :(得分:0)
经过一些尝试后,我发现它可以为解析器提供从root开始的整个目录路径,所以在我的情况下:
self.path = '/home/grace/pyDev/prova_horus2/static/XML/current/'
我不知道为什么使用prievious版本它没有...
现在我需要一种方法来避免硬编码根路径,但为此我可以帮助自己。 非常感谢yklsga指出我正确的方式