【问题标题】:Error calling LibreOffice from Python从 Python 调用 LibreOffice 时出错
【发布时间】:2015-07-19 11:20:35
【问题描述】:

调用 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 运行?

【问题讨论】:

  • txt:"Text" 是否可能实际上应该是 2 个不同的参数?
  • Ta,建议。 2个不同的论点没有帮助。文档不需要是一个字符串作为它的一个单词。

标签: python subprocess converter libreoffice


【解决方案1】:

这是您应该使用的代码:

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 时收到的消息。

【讨论】:

  • 塔,安德里亚。五有趣。当 txt:Text 在 linux 命令行上不起作用时,我早些时候从另一个用户那里复制了 txt:"Text" 的使用。重复: txt:Text 无效。从 Python 调用时它也不起作用。但现在我试了一下,两者都适用。如果有任何现有的 LibreOffice 实例正在运行,则该命令将失败。自从发布此消息以来,我关闭了所有打开的终端以防万一。我出去吃过午饭,现在可以了。
  • 谢谢,它在 Linux 上也帮助了我,使用 'libreoffice' 命令。我试图将所有参数放入 call() 的第二个参数中,结果不正确。
猜你喜欢
  • 2018-08-25
  • 2015-09-19
  • 2019-06-02
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
相关资源
最近更新 更多