【问题标题】:Parameter "--outdir" is not recognised via pythons subprocess.call but does work in terminal [duplicate]参数“--outdir”无法通过pythons subprocess.call 识别,但在终端中有效[重复]
【发布时间】:2016-10-22 21:40:28
【问题描述】:

我想编写一个 python 脚本来自动将 libreoffice ott 模板转换为普通的 odt 文件。 如果我转到终端(bash shell)并输入:

soffice --headless --convert-to odt "/path/template.ott" --outdir '/targetpath/template.odt'

输出如预期,新目标位置中的 odt 文件。

当我编写脚本时(像这样:

oldfile
outdir = pipes.quote(/targetpath/template.odt)
subprocess.call(['soffice --headless --convert-to odt /path/template.ott --outdir /pathtarget/template.odt'])

输出给了我

[Errno 2] No such file or directory

当我尝试这样拨打电话时:

subprocess.call(["soffice", "--headless", "--convert-to", "odt", pipes.quote(oldpath),outdir])

结果是soffice的帮助文本,原因是:

    LibreOffice 4.2.8.2 420m0(Build:2)

    Unknown option: --outdir /targetpath/template.odt
...

【问题讨论】:

标签: python bash subprocess libreoffice soffice


【解决方案1】:

为什么不试试 os.system 呢?

os.system('soffice --headless --convert-to odt "/path/template.ott" --outdir "/targetpath/template.odt"')

【讨论】:

  • 因为subprocess 模块旨在替换旧功能,例如os.system()
  • 确实如此。 os.system 确实有效,但子进程应该替换该功能。
猜你喜欢
  • 2020-07-25
  • 1970-01-01
  • 2017-06-02
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多