You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Docker运行pdf2htmlex遇FileNotFoundError求助

问题分析与解决

你的Python脚本调用Docker命令时出现FileNotFoundError,主要是以下几个错误导致的:

  • subprocess参数格式错误:当shell=False时,subprocess.call()要求传入命令参数列表而非拼接后的完整字符串。直接传拼接字符串会被当作单个可执行文件路径,系统自然找不到对应的文件。
  • 命令拼接缺少空格:text + filename会把命令末尾和文件名直接连在一起,生成...--zoom 1.3test4.pdf这种无效命令。
  • Docker参数冗余:-ti是交互式终端参数,脚本非交互式场景下不需要,反而会引发异常。
  • import语句位置不规范:import subprocess放在函数内部不符合Python编码规范,建议移至文件顶部。

修正后的代码

import subprocess

def pdf2html(path, filename):
    # 将命令拆分为参数列表,避免解析错误,同时规避shell=True的安全风险
    cmd = [
        "docker", "run", "--rm",
        "--mount", f"src={path},target=/pdf,type=bind",
        "pdf2htmlex/pdf2htmlex:0.18.8.rc2-master-20200820-ubuntu-20.04-x86_64",
        "--zoom", "1.3",
        filename
    ]
    subprocess.call(cmd, shell=False)

# 调用函数,使用原始字符串处理Windows路径,避免转义问题
pdf2html(r"C:\Users\1\", "test4.pdf")

额外说明

  • 使用参数列表传递命令,subprocess会正确解析每个参数,避免空格、特殊字符引发的错误。
  • 若仍出现找不到docker的情况,可指定docker的完整路径,例如"C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe"替换列表中的"docker"。
  • Windows路径建议用原始字符串(前缀r)或双斜杠转义,避免路径解析异常。

内容的提问来源于stack exchange,提问作者Sosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:15:28