![python:os.system 不执行 shell 命令](https://linux22.com/image/1108377/python%EF%BC%9Aos.system%20%E4%B8%8D%E6%89%A7%E8%A1%8C%20shell%20%E5%91%BD%E4%BB%A4.png)
我需要在 python 程序中执行 shell 命令(我有 ubuntu)。更具体地说,我想在 python 脚本中使用 graphviz 创建图形。我的代码是
os.system("dot -Tpng graph.dot -o graph.png")
它不起作用,但如果我只是输入dot -Tpng graph.dot -o graph.png
命令行,那么一切都很好。你知道问题是什么吗?谢谢!
编辑: 不起作用意味着没有任何事情发生,没有错误。
输出自 dot -v -Tpng graph.dot -o graph.png
:
dot - graphviz version 2.26.3 (20100126.1600)
Activated plugin library: libgvplugin_pango.so.6
Using textlayout: textlayout:cairo
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Using render: cairo:cairo
Using device: png:cairo:cairo
The plugin configuration file:
/usr/lib/graphviz/config6
was successfully loaded.
render : cairo dot fig gd map ps svg tk vml vrml xdot
layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
textlayout : textlayout
device : canon cmap cmapx cmapx_np dot eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg pdf plain plain-ext png ps ps2 svg svgz tk vml vmlz vrml wbmp x11 xdot xlib
loadimage : (lib) eps gd gd2 gif jpe jpeg jpg png ps svg
答案1
我找到了问题所在。我应该在执行命令之前关闭文件 graph.dot。
答案2
奇怪,我刚刚尝试使用相同的命令,它给了我预期的输出(graph.dot 不存在)你确定你有
import os
? 另外,您确定执行“点”命令的这段代码不处于不真实的状态(在“if”语句中不真实,因此此后的代码段永远不会执行)吗?