【发布时间】:2011-01-15 23:14:22
【问题描述】:
我正在使用 graphviz 的 dot 为 Web 应用程序生成一些 svg 图。我使用 Popen 调用 dot:
p = subprocess.Popen(u'/usr/bin/dot -Kfdp -Tsvg', shell=True,\
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
str = u'long-unicode-string-i-want-to-convert'
(stdout,stderr) = p.communicate(str)
发生的事情是 dot 程序抛出如下错误:
Error: not well-formed (invalid token) in line 1
... <tr><td cellpadding="4bgcolor="#EEE8AA"> ...
in label of node n260
那个明显的错误肯定不在输入字符串中。特别是,如果我使用 utf-8 编码将其保存到 str.txt 并执行
/usr/bin/dot -Kfdp -Tsvg < str.txt > myimg.svg
我得到了想要的输出。 str 唯一的“特殊”之处在于它包含像丹麦语 øæå 这样的字符。
现在我不知道我应该做什么。问题很可能出在点上;但它肯定似乎是由 Popen 触发的,与从 shell 中使用
【问题讨论】:
标签: python pipe subprocess graphviz popen