从Python

时间:2015-05-08 13:52:45

标签: python subprocess converter libreoffice

调用LibreOffice将文档转换为文本...

这可以在linux命令行中正常工作:

soffice --headless --convert-to txt:"Text" document_to_convert.doc

但是当我尝试从Python运行相同的命令时出现错误:

subprocess.call(['soffice', '--headless', '--convert-to', 'txt:"Text"', 'document_to_convert.doc'])
  

错误:请重新验证输入参数...

如何从Python运行命令?

1 个答案:

答案 0 :(得分:5)

这是你应该使用的代码:

subprocess.call(['soffice', '--headless', '--convert-to', 'txt:Text', 'document_to_convert.doc'])

这是您发布的同一行,txt:Text附近没有引号。

为什么会看到错误?简单地说:因为soffice不接受txt:"Text"。它只接受txt:Text

为什么它在shell上运行?你的shell隐式删除了参数周围的引号,因此执行的命令实际上是:

soffice --headless --convert-to txt:Text document_to_convert.doc

尝试运行此命令:

soffice --headless --convert-to txt:\"Text\" document_to_convert.doc

行情不会被删除,您将看到使用Python获得的请验证输入参数消息。