Моя проблема на самом деле не конкретный c вопрос, а неожиданное поведение моей программы. Я пытаюсь создать класс Node , который позже я буду использовать для создания класса Tree для построения древовидных структур папок, подпапок и файлов данного каталога.
В настоящее время я создаю класс Узел .
class Node(object):
def __init__(self, path):
"""Assumes path is a string"""
self.path = (path, path[:-1])[path.endswith('/')]
self.name = os.path.basename(self.path)
if os.path.isdir(self.path):
self.type = 'Directory'
elif os.path.isfile(self.path):
self.type = 'File'
else:
raise OSError ('Path is incorrect. It does not lead to a file, nor to a directory')
def getName(self):
return self.name
def getPath(self):
return self.path
def getType(self):
return self.type
def getInfo(self):
print(self.type + ' ' + self.name + ' : ' + self.path)
def getParent(self):
return Node(os.path.dirname(self.path))
def getChilds(self, hidden = False):
return [Node(os.path.join(self.path, child)) for child
in os.listdir(self.path) if (child[0] != '.' or hidden)]
def __str__(self):
return '<' + self.type + ',' + self.name + '>'
Запуск:
CEA = Node('/Users/alexandrejewell/Desktop/CEA/')
for child in CEA.getChilds():
child.getInfo()
>>> Directory Database : /Users/alexandrejewell/Desktop/CEA/Database
: /Users/alexandrejewell/Desktop/CEA/Icon
Directory VSA : /Users/alexandrejewell/Desktop/CEA/VSA
Directory Inputs : /Users/alexandrejewell/Desktop/CEA/Inputs
Файл Icon не является допустимый файл и должен вызывать ошибку при создании соответствующего узла, так же, как и при его непосредственном создании:
Icon = Node('/Users/alexandrejewell/Desktop/CEA/Icon')
>>> OSError: Path is incorrect. It does not lead to a file, nor to a directory
Почему этого не происходит? И что я должен сделать, чтобы исправить это и исключить эти узлы из списка узлов, сгенерированных Node.getChilds?