Python 2.7: просто неправильно дополняет - PullRequest
0 голосов
/ 11 февраля 2019

Следующий код некорректно дополняет строки

    for pre, fill, node in anytree.RenderTree(tree):

        prefix = ("{pre_print}{node_print}".format(pre_print=pre.encode('utf-8'), node_print=node.name)).ljust(120, '-')
        f.write("{pref}> {status}".format(pref=prefix, status=node.status.message()))
        f.write("\n")

Некоторые из выводов, которые я получаю (я сократил заполнение строк для удобства чтения):

├── modelo_srtm_30_nuevo----------------------------------> No cumple regla
├── modelos_externos--------------------------------------> Ok
│   ├── .snapshot---------------------------------------> No cumple regla
│   ├── 2017 - Aguas Blancas----------------------------> No cumple regla

Когдаpre изменяется, длина строки больше не должна быть.

РЕДАКТИРОВАТЬ: следующие коды демонстрируют проблему, создав образец дерева и распечатав его:

import anytree


root = anytree.Node(name="root")
child_1 = anytree.Node(name="child_1", parent=root)
grandchild_11 = anytree.Node(name="grandchild_11", parent=child_1)
child_2 = anytree.Node(name="child_2", parent=root)
grandchild_21 = anytree.Node(name="grandchild_21", parent=child_2)
child_3 = anytree.Node(name="child_3", parent=root)
grandchild_31 = anytree.Node(name="grandchild_31", parent=child_3)

filename = "test_tree.txt"

with open(filename, "wt") as f:

    for pre, fill, node in anytree.RenderTree(root):

        prefix = ("{pre_print}{node_print}".format(pre_print=pre.encode('utf-8'), node_print=node.name)).ljust(40, '-')
        f.write("{pref}> {status}".format(pref=prefix, status="testing..."))
        f.write("\n")

1 Ответ

0 голосов
/ 11 февраля 2019

Как подсказывает Антти, оправдание после кодирования не даст очень плодотворных результатов.Попробуйте сначала обосновать, а затем , затем кодировать:

with open(filename, "wt") as f:
    for pre, fill, node in anytree.RenderTree(root):
        prefix = (u"{pre_print}{node_print}".format(pre_print=pre, node_print=node.name)).ljust(40, '-').encode("utf-8")
        f.write("{pref}> {status}".format(pref=prefix, status="testing..."))
        f.write("\n")

Результат:

root------------------------------------> testing...
├── child_1-----------------------------> testing...
│   └── grandchild_11-------------------> testing...
├── child_2-----------------------------> testing...
│   └── grandchild_21-------------------> testing...
└── child_3-----------------------------> testing...
    └── grandchild_31-------------------> testing...
...