Как запустить «точку» как команду из Python? - PullRequest
4 голосов
/ 05 июня 2009

Я использую Python на Mac OSX Leopard.

Я пытаюсь запустить программу 'dot' (часть Graphviz) из Python:

# -*- 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 / бен: / бен: / USR / SBIN: / SBIN 0 32512

Насколько я понимаю, ошибка 32512 означает, что python не может найти файл, и, поскольку файл 6.dot существует (если я запускаю "dot -o9.png -Tpng ./6.dot" из терминала, который я получаю ошибки нет, и создается 9.png), я предполагаю, что Python не может найти файл точек.

Мне, вероятно, нужно добавить файл точки в путь. Но я не знаю, где это. Если я бегу:

whereis dot

Я не получил ответа.

Как мне найти исполняемый файл dot?
Или я могу запустить программу dot как команду из Python?

Ответы [ 12 ]

1 голос
/ 05 июня 2009

Вместо:

print os.system("dot -o9.png -Tpng ./6.dot")

попробуйте это:

from subprocess import check_call
print check_call("dot -o9.png -Tpng ./6.dot")

Если статус выхода из точечной программы равен 0, статус печатается. Если точка возвращает ненулевое состояние, она вызывает CalledProcessError (и показывает возвращенное состояние). Если точка не существует в текущем пути, OSError вызывается в Linux или WindowsErroor в Windows (я не знаю, какое исключение возникает в Mac OS, но я предполагаю OSError).

РЕДАКТИРОВАТЬ: приведенный выше код даст вам подсказку, если у вас нет текущего исполняемого файла или файла 6.dot в текущих настройках пути.

0 голосов
/ 05 мая 2016

Если вы используете графический интерфейс, например Spyder, вы можете просто добавить правильный путь к корзине в меню параметров PYTHONPATH manager.

Найдите местоположение скрипта, выполнив это в терминале:

which programname

затем возьмите это место (где бы оно ни находилось), вычтите имя программы, например:

/home/username/seiscomp3/bin/scart
#this is the section of the path that you use
/home/username/seiscomp3/bin

Затем перейдите в меню параметров PYTHONPATH manager и добавьте этот путь. Затем перезапустите Spyder, и он заработает.

...