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

如何在Python的subprocess库中无需指定完整路径调用exe文件

解决Python subprocess无需完整路径调用同目录exe的问题

问题根源

你遇到的问题是因为Python的工作目录不一定等于脚本所在目录——比如你在其他目录下运行python xxx/your_script.py时,工作目录是你当前的命令行路径,不是脚本所在的文件夹,所以直接写hashcat.exe会找不到文件。

可靠解决方案:基于脚本目录拼接路径

这是最通用的方法,不管你从哪里运行脚本,都能准确定位到同目录的exe:

import subprocess
import os

def openHC():
    try:
        # 获取当前脚本的绝对路径,再提取所在目录
        script_dir = os.path.dirname(os.path.abspath(__file__))
        # 拼接同目录下的exe路径
        hashcat_path = os.path.join(script_dir, "hashcat.exe")
        subprocess.call(hashcat_path)
    except Exception as e:
        # 打印具体错误信息,方便排查问题
        print(f"执行出错: {str(e)}")

openHC()

可选方案:将exe目录加入系统PATH

如果你想直接用hashcat.exe调用,可以临时把脚本所在目录加到环境变量PATH中(这样subprocess会在PATH里查找exe):

import subprocess
import os

def openHC():
    try:
        script_dir = os.path.dirname(os.path.abspath(__file__))
        # 将脚本目录加入PATH,临时生效
        os.environ['PATH'] = f"{script_dir}{os.pathsep}{os.environ['PATH']}"
        subprocess.call("hashcat.exe")
    except Exception as e:
        print(f"执行出错: {str(e)}")

openHC()

如果需要永久生效,直接在系统环境变量的PATH中添加exe所在的目录即可(之后任何程序都能直接调用该exe)。

额外建议

别用空的except:,它会捕获所有异常包括键盘中断等,不利于排查问题。至少捕获具体异常(比如FileNotFoundError),或者像上面那样打印异常详情,能快速知道是文件找不到还是其他错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:10:19