Я хочу запустить пример из Graphviz, но у меня возникла проблема с UnicodeDecodeError.
Я запускаю этот пример в блокноте jupyter.
from graphviz import Digraph, nohtml
g = Digraph('g', filename='btree.gv',
node_attr={'shape': 'record', 'height': '.1'})
g.node('node0', nohtml('<f0> |<f1> G|<f2>'))
g.node('node1', nohtml('<f0> |<f1> E|<f2>'))
g.node('node2', nohtml('<f0> |<f1> B|<f2>'))
g.node('node3', nohtml('<f0> |<f1> F|<f2>'))
g.node('node4', nohtml('<f0> |<f1> R|<f2>'))
g.node('node5', nohtml('<f0> |<f1> H|<f2>'))
g.node('node6', nohtml('<f0> |<f1> Y|<f2>'))
g.node('node7', nohtml('<f0> |<f1> A|<f2>'))
g.node('node8', nohtml('<f0> |<f1> C|<f2>'))
g.edge('node0:f2', 'node4:f1')
g.edge('node0:f0', 'node1:f1')
g.edge('node1:f0', 'node2:f1')
g.edge('node1:f2', 'node3:f1')
g.edge('node2:f2', 'node8:f1')
g.edge('node2:f0', 'node7:f1')
g.edge('node4:f2', 'node6:f1')
g.edge('node4:f0', 'node5:f1')
g.view()
Полная трассировка приведена ниже. Я думаю, что Юпитер не может декодировать файл 'btree.gv'. но я не знаю как это исправить. Я попытался добавить кодировку в g = Digraph (...), но это не сработало. файл все еще сохранен как utf-8
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-1-661843ad24a0> in <module>
23 g.edge('node4:f0', 'node5:f1')
24
---> 25 g.view()
~\Anaconda3\lib\site-packages\graphviz\files.py in view(self, filename, directory, cleanup, quiet, quiet_view)
240 return self.render(filename=filename, directory=directory,
241 view=True, cleanup=cleanup,
--> 242 quiet=quiet, quiet_view=quiet_view)
243
244 def _view(self, filepath, format, quiet):
~\Anaconda3\lib\site-packages\graphviz\files.py in render(self, filename, directory, view, cleanup, format, renderer, formatter, quiet, quiet_view)
207 rendered = backend.render(self._engine, format, filepath,
208 renderer=renderer, formatter=formatter,
--> 209 quiet=quiet)
210
211 if cleanup:
~\Anaconda3\lib\site-packages\graphviz\backend.py in render(engine, format, filepath, renderer, formatter, quiet)
206 else:
207 cwd = None
--> 208 run(cmd, capture_output=True, cwd=cwd, check=True, quiet=quiet)
209 return rendered
210
~\Anaconda3\lib\site-packages\graphviz\backend.py in run(cmd, input, capture_output, check, quiet, **kwargs)
169
170 if not quiet and err:
--> 171 _compat.stderr_write_bytes(err, flush=True)
172 if check and proc.returncode:
173 raise CalledProcessError(proc.returncode, cmd,
~\Anaconda3\lib\site-packages\graphviz\_compat.py in stderr_write_bytes(data, flush)
60 """Encode data str and write to sys.stderr (flush if requested)."""
61 encoding = sys.stderr.encoding or sys.getdefaultencoding()
---> 62 sys.stderr.write(data.decode(encoding))
63 if flush:
64 sys.stderr.flush()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xad in position 20: invalid start byte
Я надеюсь на вашу помощь.