如何从Python中运行“dot”命令?

5 投票
12 回答
10350 浏览
提问于 2025-04-15 12:03

我在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

撰写回答