问题标签 [anytree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1430 浏览

python - 使用 Anytree 类时未定义名称

我正在使用 Python 的 anytree 包,我正在尝试遍历树:

但是,由于某种原因,我收到了错误消息NameError: name 'LevelOrderIter' is not defined

我已经安装了anytree(它可以创建节点等)并且根据语法我似乎是正确的:http: //anytree.readthedocs.io/en/latest/apidoc/anytree.iterators.html#anytree.iterators.LevelOrderIter

任何想法它不起作用?

完整错误:

0 投票
2 回答
2506 浏览

python - 如何使用 Selenium 单击多个元素,同时避免 Stale Element Error

我正在制作一些站点地图/树(使用anytree),为了做到这一点,我需要Selenium在页面上找到特定元素(代表类别),然后系统地点击这些元素,寻找新的类别在每个新页面上,直到我们没有更多类别,即。所有的叶子和树都被填充了。

我已经写了很多。尝试遍历我的元素列表时出现了我的问题。我目前尝试先填充树的深度,然后向下到叶子,然后弹回原始页面以对列表中的下一个元素继续相同的操作。但是,这会导致Stale element reference错误,因为我的页面会重新加载。什么是解决方法?我可以以某种方式在新窗口中打开新链接以保留旧页面吗?我为该异常找到的唯一修复是巧妙地捕获它,但这对我没有帮助。

到目前为止,这是我的代码(问题在于 for 循环):

0 投票
1 回答
1157 浏览

python - 没有重复子节点的树

使用anytree我制作了这样的树:

有没有办法删除所有重复的孩子并将其变成下面的树(递归所有可能级别的孩子)?

编辑:

我想要实现的是网站上所有链接的树。所以斜线之间的所有东西都会变成一个孩子:(.../child/...第二个斜线是可选的)。以上只是我的问题的代表,但我希望它很清楚。

这是我的节点生成:

0 投票
2 回答
5389 浏览

python-3.x - 如何使用 graphviz 和 anytree 包在 Python 中渲染图形

我正在按照anytree 包的文档来渲染图形。请注意我已经在我的mac上安装了graphviz

当我尝试执行这个

我收到以下错误

Traceback(最近一次调用最后一次):文件“”,第 1 行,在 RenderTreeGraph(udo).to_picture("udo.png") 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ site-packages/anytree/dotexport.py”,第 51 行,在 to_picture check_call(cmd) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py”,第 286 行,在check_call retcode = call(*popenargs, **kwargs) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py”,第 267 行,与 Popen(*popenargs, * *kwargs) as p:文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py”,第 707 行,在init restore_signals,start_new_session)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py”,第 1326 行,在 _execute_child raise child_exception_type(errno_num, err_msg) FileNotFoundError: [Errno 2] No such文件或目录:'点'

请帮我渲染树

0 投票
0 回答
145 浏览

python - 高度未知的 Python 树

假设我有 2 列:

我要做的是,我必须从 OP_Code 列中获取一个值,并通过 Additional Work 获取所有相应的值。现在 Additional Work 列值是我的新 OP_Codes。然后再次搜索其对应的Additional Works。这个过程一直持续到我遇到该特定列的空白单元格。上表的输出如下所示: https://i.stack.imgur.com/SycQM.png 问题是我们不知道一棵树可以有多少分支。以下是我的代码示例:

现在我得到这样的输出:

Nan 是空白列现在我的问题是所有分支都没有输出。例如 014270 有更多的分支。它仅适用于某些部分。请帮助

0 投票
2 回答
1614 浏览

python - 在 Python 中渲染树

我有如下数据集:

下面的代码给了我以下输出:

但我想要在这里以渲染树格式打印输出,如下所示:

我知道 python 库 Anytree 在这里很有用,但我不知道如何实现这段代码。任何帮助将不胜感激。

0 投票
2 回答
5433 浏览

python-3.x - 使用anytree和graphviz在python中渲染树,而不合并公共节点

我正在["abc", "abd", "aec", "add", "adcf"]使用 python3 的 anytree 包从列表中创建一棵树。在这棵树中,每个列表元素的第一个字符 -a是一个根,随后,其他字符被添加为它们的子元素。当我渲染树时,它看起来像:

但是当我使用方法将树渲染为图片时to_picture,图像是 -

在此处输入图像描述

我不希望合并公共节点,因为它正在向我的树添加不需要的路径。

0 投票
1 回答
1391 浏览

python - 访问任意树上的特定子级

我已经开始使用anytree,但目前在我的树上迭代时面临一些挑战。

测试树:

渲染树:

Node('/top', keywords='topleveltree') ├── Node('/top/hello', keywords='hello') │ ├── Node('/top/hello/hello X', answer='Say hello to X', keywords='hello X') │ └── Node('/top/hello/hello Y', answer='Say hello to Y', keywords='hello Y') └── Node('/top/goodbye', keywords='goodbye') └── Node('/top/goodbye/goodbye X', answer='Say goodbye to X', keywords='goodbye X')

我的脚本检索树的第一级(/top/hello 和 /top/goodbye),现在我基本上试图获取它们下方的任何内容(尤其是关键字和答案)。

我已经能够使用多种方式来实现这一点,例如hello.descendants或者只是使用LevelOrderIter(hello),但是我现在正尝试使用某种 python 逻辑(其中变量现在是一个字符串)来做同样的事情。

我试图运行 Node(hello).descendants 但它返回一个空数组。但是,如果我运行type(hello)并且type(Node('hello'))两者都返回<class 'anytree.node.node.Node'>

前任:

我对树的经验很少,所以我想我缺少一些基本的东西,但找不到什么。

0 投票
1 回答
2942 浏览

python - Python,无法使用带有 anytree 包的 graphviz 绘制树

所以我已经安装了 anytree 包(经过很大的努力;我不得不在我的系统上添加一些环境变量)。完成此操作后,我可以使用 anytree 包的几乎所有功能——只是不是我想要的。我希望将 graphviz 与 anytree 包结合使用,以便使用“DotExporter”命令绘制树。

我已经安装了graphviz;它的路径是 C:\Users\joel\Anaconda3_2\Lib\site-packages\graphviz,我还在我的 Python 文档中添加了“from anytree.exporter import DotExporter”这行代码(除了需要的其他 anytree 导入做树)。

因此,在定义了我的树的根节点“root”之后,我现在应该能够使用“DotExporter(root).to_picture('root.png')”命令中的任何一个来生成树的 png 和点文件,但是我收到以下错误消息:

'FileNotFoundError: [WinError 2] 系统找不到指定的文件'。

有人知道发生了什么吗?我正在使用带有引擎 Spyder 的 Python 3.6.2 作为 Anaconda 发行版的一部分(我有 Anaconda 3.2)。我 99% 确定我拥有最新版本的 anytree 和 graphviz。

更新:所以我了解到 Anaconda 和 graphviz 之间存在很大的兼容性问题大约一年了,并认为这就是问题所在。在尝试了人们建议的所有解决方案后,我仍然无法让我的程序正常工作,所以我最终卸载了 Anaconda,而是开始将 PyCharm 与标准 Python 解释器一起使用。但是该程序仍然无法运行,因此即使 Anaconda 和 graphviz 之间存在兼容性问题,但事实证明这不是问题所在。我在我室友的机器上尝试了这个程序,它也使用了 Anaconda,得到了同样的错误。

最后我找到了以下解决方法:我无法让 'DotExporter(root).to_picture('root.png')' 命令工作,但 'DotExporter(root).to_dotfile('root.dot') ' 命令有效。“.dot”文件包含代码,可以在记事本中打开(其他文字处理软件也可以)。因此,我只需要找到一种使用点文件而不是使用“DotExporter(root).to_picture('root.png')”命令来绘制树的方法。最简单的方法是通过在线工具http://www.webgraphviz.com/http://sandbox.kidstrythisathome.com/erdos/中的任何一个。只需在记事本中打开您的点文件,复制其内容并将其粘贴到网站并点击生成。

0 投票
1 回答
6830 浏览

python - 从文件中读取数据并使用 python 中的 anytree 创建树

有没有办法从文件中读取数据并使用anytree构造一棵树?

我可以使用静态值来做到这一点,如下所示。但是,我想通过使用 anytree 从文件中读取数据来自动执行此操作。

输出是