Создать массивное дерево из любого дерева из текстового файла (Python) - PullRequest
0 голосов
/ 03 сентября 2018

Я работаю с некоторыми массивными деревьями и хочу иметь возможность хранить их в текстовых файлах и восстанавливать их в другом месте без необходимости каждый раз заново создавать дерево.

Я использую AnyTree для создания своих деревьев. Деревья содержат пустые массивы, поэтому преобразование JSON не поддерживается. Я экспортирую их как вложенные словари.

Так я записываю дерево в текстовый файл.

#Exports the tree to the given filename as a dictionary
def TreetoDict(filename, root):
    exporter = DictExporter()
    dictoutput = exporter.export(root)
    string = str(dictoutput)
    with open(filename,"w") as f:
        f.write(string)
        f.close()
    print("Finished writing")
    return dictoutput

Поскольку дерево такое большое, я полагаю, что при превращении словаря в строку множество разрывов строк в виде "" без моего согласия.

Так выглядит текстовый файл.

 ("{'center': array([0, 0, 0]), 'radius': 2, 'name': '([0 0 0],2)', "
 "'numpoints': 0, 'centerofmass': array([0, 0, 0]), 'children': [{'center': "
 "array([1., 1., 1.]), 'radius': 1.0, 'name': '([1. 1. 1.],1.0)', 'numpoints': "
 "0, 'centerofmass': array([0, 0, 0]), 'children': [{'center': array([1.5, "
 "1.5, 1.5]), 'radius': 0.5, 'name': '([1.5 1.5 1.5],0.5)', 'numpoints': 0, "
 "'centerofmass': array([0, 0, 0])}, {'center': array([1.5, 1.5, 0.5]), "
 "'radius': 0.5, 'name': '([1.5 1.5 0.5],0.5)', 'numpoints': 0, "
 "'centerofmass': array([0, 0, 0]), 'children': [{'center': array([1.75, 1.75, "
 "0.75]), 'radius': 0.25, 'name': '([1.75 1.75 0.75],0.25)', 'numpoints': 0, "
 "'centerofmass': array([0, 0, 0]), 'children': [{'center': array([1.875, "
 "1.875, 0.875]), 'radius': 0.125, 'name': '([1.875 1.875 0.875],0.125)', "
 "'numpoints': 0, 'centerofmass': array([0, 0, 0])}, {'center': array([1.875, " etc.

Как я могу отформатировать словарь в виде строки, которая будет помещена в текстовый файл, который я впоследствии смогу прочитать, чтобы восстановить дерево?

1 Ответ

0 голосов
/ 03 сентября 2018

это похоже на подходящий вариант использования для xml

https://www.w3schools.com/xml/xml_tree.asp

есть несколько библиотек, которые поддерживают: https://docs.python.org/2/library/xml.etree.elementtree.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...