python-3.x 通过子进程执行命令时访问被拒绝

2w3kk1z5  于 2023-01-10  发布在  Python
关注(0)|答案(1)|浏览(123)

我想使用LibreOffice将文件转换为pdf。我可以从命令行正确地完成,但我无法从python调用。我使用的是Mac,需要两个步骤:
1.转到libreoffice的文件夹(通常位于/Applications/LibreOffice.app/Contents/MacOS
1.执行./soffice --headless --convert-to pdf input_folder--outdir output_folder
我试过了

subprocess.run(["cd", libreoffice_path])  
subprocess.run(["./","soffice","--headless","--convert-to", "pdf", input_folder, "--outdir", output_folder])

但我得到了一个Permission denied: './'错误。
我认为这是一个访问错误,并通过从命令行使用chmod +x使soffice可执行(尽管我怀疑它已经是)。
我错过了什么?

nzk0hqpo

nzk0hqpo1#

将第一个参数拆分为两个。尝试运行以下命令:

subprocess.run(["./soffice", "--headless", "--convert-to", "pdf", input_folder, "--outdir", output_folder])

此外,更改工作目录的更好方法是使用os.chdir

import os
os.chdir(libreoffice_path)

相关问题