2017-11-08 6 views
0

[OK]を別のファイルにクラスのインポート後にエラーが見つかりません、私は、このクラスで私のプロジェクト内部のpythonファイルを持っている:Pythonのファイルは

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

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 

私は、このクラスをスタンドアロンで実行する場合

が動作します。しかし、私は

import hd_modXML #thats my separate file name 

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

、以下のように私のメインのアプリファイルにこのクラスをインポートする場合、私は、ファイルをretriveすることはできません...

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

なぜか。私はそれを見つけることができるスタンドアロンファイルで、インポート後に私はできない?

プロジェクト構造:

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

私はなぜ知らない。私はそれが私の場合にはので、パーサをルートから全体のディレクトリパスを与えて働くことがわかったいくつかの試行後

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

プロジェクトのディレクトリ構造を投稿できますか? – yash

+0

あなたの投稿にディレクトリ構造を追加してください – yash

+0

ちょうど私がコメントの中でそれをfromatしようとしています... – fabbronet

答えて

0

私は、ルートパスのハードコーディングを避ける方法が必要ですが、このためには自分自身を助けることができます。 yklsgaが正しい方法を教えてくれてありがとう