如何从Python中运行“dot”命令?
我在Mac OSX Leopard上使用Python。
我想从Python运行一个叫做'dot'的程序(它是Graphviz的一部分):
# -*- coding: utf-8 -*-
import os
print os.environ['PATH']
print os.system("ls >> a.txt")
print os.system("dot -o9.png -Tpng ./6.dot")
这里的命令"ls"只是为了确认Python在正确的目录下。结果显示是:
/usr/bin:/bin:/usr/sbin:/sbin 0 32512
我理解的32512这个错误意味着Python找不到文件,而文件6.dot确实存在(如果我在终端运行"dot -o9.png -Tpng ./6.dot",没有错误,9.png文件也生成了),所以我猜Python找不到这个dot文件。
我可能需要把dot文件添加到路径中。但我不知道它在哪里。如果我运行:
whereis dot
我没有得到任何回应。
我该如何找到dot可执行文件?
另外,我能否在Python内部作为命令运行dot程序?
12 个回答
3
试试这个:
# -*- coding: utf-8 -*-
import os
import sys
print os.environ['PATH']
os.environ['PATH'] += ":"+"/usr/local/bin"
print os.environ['PATH']
print os.getcwd()
from subprocess import check_call
print check_call(["dot", "-o9.png", "-Tpng", "./6.dot"])
这是从问题中提取的,目的是为了保持一些理智。
10
whereis
命令用来找到手册页的位置,而 which
命令用来找到可执行文件的位置。所以你可以试试输入 which dot
。
2
你需要修改一下PATH这一行,让它包含存放dot
的文件夹。这个文件夹是/usr/local/bin
,记得不要加上/dot
。