0

这是我的代码:

   #!/usr/bin/python

    import subprocess

    asciidoc_file_name = '/tmp/redoc_2013-06-25_12:52:19.txt'
    asciidoc_call = ["asciidoc","-b docbook45",asciidoc_file_name]
    print asciidoc_call
    subprocess.call(asciidoc_call)

这是输出:

    labamba@lambada:~$ ./debug.py
    ['asciidoc', '-b docbook45', '/tmp/redoc_2013-06-25_12:52:19.txt']
    asciidoc: FAILED: missing backend conf file:  docbook45.conf
    labamba@lambada:~$ asciidoc -b docbook45 /tmp/redoc_2013-06-25_12\:52\:19.txt
    labamba@lambada:~$ file /tmp/redoc_2013-06-25_12\:52\:19.xml
    /tmp/redoc_2013-06-25_12:52:19.xml: XML document text
    labamba@lambada:~$ file /etc/asciidoc/docbook45.conf
    /etc/asciidoc/docbook45.conf: HTML document, ASCII text, with very long lines

通过 python 子进程调用时,asciidoc抱怨缺少配置文件。在命令行上调用时,一切都很好,并且配置文件在那里。任何人都可以理解这一点吗?我迷路了。

4

2 回答 2

2

尝试这个:

asciidoc_call = ["asciidoc","-b", "docbook45", asciidoc_file_name]

另一个调用将调用 ascidoc"-b docbook45"作为一个选项,这是行不通的。

于 2013-06-25T11:30:04.130 回答
2

这个问题很老了......无论如何,它asciidoc是用 Python 实现的,它还包括asciidocapi.py可以用作 Python 程序中的模块的。模块文档字符串说:

asciidocapi - AsciiDoc API wrapper class.

The AsciiDocAPI class provides an API for executing asciidoc. Minimal example
compiles `mydoc.txt` to `mydoc.html`:

  import asciidocapi
  asciidoc = asciidocapi.AsciiDocAPI()
  asciidoc.execute('mydoc.txt')

- Full documentation in asciidocapi.txt.
- See the doctests below for more examples.

为简化起见,它实现了AsciiDocAPI在初始化时搜索asciidoc脚本并将其作为模块在后台导入的类。这样,您可以更自然地在 Python 中使用它,并且可以避免使用subprocess.call().

于 2015-09-14T13:54:06.477 回答