Я потратил слишком много времени, работая над проблемой, и мой коллега предложил мне опубликовать здесь вопрос с предложениями по проблеме узла / листа дерева. Я работаю в python libtree и pandas. В настоящее время у меня есть один файл CSV с более чем 450 000 конечных узлов, по одному листу на строку. Все родительские элементы находятся в одном столбце в формате «Родитель ->» на каждого родителя над листом. Не уверен, что это обычный формат, но его легко разобрать.
Примером родительского столбца для конечного узла на 4 слоя будет «Узел A -> Узел AA -> Узел AAB»
Разрешение на:
Root
|
+---> Node A
|
+---> Node AA
|
+---> Node AAB
|
+---> Leaf
Самое главное, моей команде нужно импортировать эти данные в сторонний WebGUI. Система WebGUI имеет ограниченную функцию импорта CSV и позволяет перемещать родительские папки с помощью перетаскивания после импорта. Он также имеет следующие ограничения.
1) Количество конечных узлов на файлы CSV с менее чем 8000 конечных узлов, поэтому CSV необходимо разбить на сегменты.
2) Каждый импорт создаст новое дерево вне корня, без слияния. Если он существует, импорт создаст новый узел и добавит сгенерированный UUID к имени нового узла.
Пример Если вы попытаетесь импортировать новый CSV-файл с конечным узлом «Узел A -> Узел AA -> Узел AAC», вы увидите:
Root
|
+---> Node A
| |
| +---> Node AA
| |
| +---> Node AAB
| |
| +---> Leaf
+---> Node A-d8c0b6b8-728a-11e9-8848-1681be663d3e
|
+---> Node AA
|
+---> Node AAC
|
+---> Leaf
Лучшее решение для этого, которое я могу придумать для обработки нашего большого файла CVS:
Разбейте файл на сегменты, начиная с самых дальних веток вниз по дереву, идя назад, пока у меня не будет 7999 листовых узлов.
Запишите новый файл CVS с верхним узлом с простым в обращении именем, идентифицирующим родительский узел, в который он должен быть импортирован.
С помощью Intern перетащите папки с помощью веб-интерфейса в правильные места.
Я упрямый администратор, который немного работает со скриптами, и я нахожу это немного выше моего уровня опыта. Пожалуйста, дайте мне знать, если я упускаю что-то очевидное. Я хотел бы решить эту проблему в Python 2.7x или 3.x, чтобы проверить на работе.
Первоначально я разместил это на канале Reddit / r / LearningPython, так что вы, возможно, видели этот вопрос раньше. Пожалуйста, дайте мне знать, если есть лучший район, сайт.
Спасибо за любые предложения или помощь.