python: os.system не выполняет команду оболочки

Мне нужно выполнить команду оболочки в программе на Python (у меня есть Ubuntu). В частности, я хочу создать граф с использованием graphviz в скрипте Python. Мой код

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
задан 7 July 2012 в 19:15

2 ответа

Я понял проблему. Я должен закрыть файл graph.dot перед выполнением команды.

0
ответ дан 7 July 2012 в 19:15

Странно, я только что попытался с помощью той же команды, и она дала мне ожидаемый результат (что graph.dot не существует) Вы уверены, что у вас есть

import os

? Кроме того, уверены ли вы, что этот фрагмент кода, который выполняет команду 'точка', не находится в неверном состоянии (в выражении 'if', которое не соответствует действительности, поэтому фрагмент кода после этого никогда не выполняется)?

0
ответ дан 7 July 2012 в 19:15

Другие вопросы по тегам:

Похожие вопросы: