subprocess.run 简单场景失败
subprocess.run simple scenario fails
我正在尝试 运行 python subprocess.run 函数来执行以下命令:
pdftoppm -jpeg -f 1 -scale-to 200 data/andromeda.pdf and-page
pdftopm - 是 poppler 实用程序的一部分,它从 pdf 文件生成图像。
文件 data/andromeda.pdf 存在。文件夹数据与 python 脚本 and/or 处于同一级别,我从中发出 运行 命令。
命令基本上会生成一个 jpeg 文件,从第 1 页 (-f 1) 200px 宽 (-scale-to) 来自给定的和-page-1.jpeg 格式的文件(所谓的 ppmtroot)。
长话短说:从命令行运行如预期的那样,即如果我从 zsh 或 [=48 调用上述命令=] shell,手动 - 它按预期生成缩略图。但是,如果我 运行 它 来自 python 子进程模块 - 它失败 它 returns 99 错误代码!
以下是python代码(文件名为sc_02_thumbnails.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 是 repo,其中还包括 data/andromeda.pdf 文件。
我用 as (from zsh):
调用我的脚本
$ chmod +x ./sc_02_thumbnauils.py
$ ./sc_02_thumbnails.py data/andromeda.pdf and-page
and ...缩略图生成失败!
我尝试从 zsh 和 bash shells 执行 python 脚本 :(
我做错了什么?
引用错误,你应该有'-f', '1',
等等
我正在尝试 运行 python subprocess.run 函数来执行以下命令:
pdftoppm -jpeg -f 1 -scale-to 200 data/andromeda.pdf and-page
pdftopm - 是 poppler 实用程序的一部分,它从 pdf 文件生成图像。
文件 data/andromeda.pdf 存在。文件夹数据与 python 脚本 and/or 处于同一级别,我从中发出 运行 命令。 命令基本上会生成一个 jpeg 文件,从第 1 页 (-f 1) 200px 宽 (-scale-to) 来自给定的和-page-1.jpeg 格式的文件(所谓的 ppmtroot)。
长话短说:从命令行运行如预期的那样,即如果我从 zsh 或 [=48 调用上述命令=] shell,手动 - 它按预期生成缩略图。但是,如果我 运行 它 来自 python 子进程模块 - 它失败 它 returns 99 错误代码!
以下是python代码(文件名为sc_02_thumbnails.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 是 repo,其中还包括 data/andromeda.pdf 文件。 我用 as (from zsh):
调用我的脚本 $ chmod +x ./sc_02_thumbnauils.py
$ ./sc_02_thumbnails.py data/andromeda.pdf and-page
and ...缩略图生成失败! 我尝试从 zsh 和 bash shells 执行 python 脚本 :( 我做错了什么?
引用错误,你应该有'-f', '1',
等等