子流程运行简单场景失败

2024-10-04 05:21:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着运行python子流程运行函数执行以下命令:

 pdftoppm -jpeg -f 1 -scale-to 200 data/andromeda.pdf and-page

是poppler实用程序的一部分,它从pdf文件生成图像。你知道吗

文件数据/仙女座.pdf存在。文件夹数据与python脚本和/或运行命令的位置处于同一级别。 命令基本上会生成一个jpeg文件,从第1页(-f 1)200px宽(-scale到)从给定的文件和-page-1.jpeg格式(所谓的ppmtroot)。你知道吗

长话短说:从命令行,它按预期工作,也就是说,如果我从zsh或bash shell调用上述命令,它会按预期手动生成缩略图。但是,如果我从python子进程模块运行它,它会失败,返回99个错误代码!你知道吗

下面是python代码(文件名是sc\u 02_缩略图.py)地址:

import subprocess
import sys


def main(filename, ppmroot):
    cmd = [
        'pdftoppm',
        '-f 1',
        '-scale-to 200',
        '-jpeg',
        filename,
        ppmroot
    ]
    result = subprocess.run(
        cmd,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE
    )
    if result.returncode:
        print("Failed to generate thumbnail. Return code: {}. stderr: {}".format(
            result.returncode,
            result.stderr
        ))
        print("Used cmd: {}".format(' '.join(cmd)))
        sys.exit(1)
    else:
        print("Success!")         


if __name__ == "__main__":
    if len(sys.argv) > 2:
        filename = sys.argv[1]
        ppmroot = sys.argv[2]
    else:
        print("Usage: {} <pdffile> <ppmroot>".format(sys.argv[0]))
        sys.exit(1)

    main(filename, ppmroot)

here是包含数据的回购/仙女座.pdf还有文件。 我用as(来自zsh)调用脚本:

 $ chmod +x ./sc_02_thumbnauils.py
 $ ./sc_02_thumbnails.py data/andromeda.pdf  and-page

还有。。。缩略图生成失败! 我尝试过从zsh和bash shell执行python脚本:( 我做错了什么?你知道吗


Tags: 文件to命令cmdpdfsyspageresult