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

如何用Python调用带参数的FlashProgrammer lnk快捷方式文件

问题根因
  • .lnk 是Windows系统的快捷方式索引文件,本身不是可执行程序,无法直接作为执行目标传入subprocess的非shell模式,这是触发OSError: [WinError 193] %1 is not a valid Win32 application错误的核心原因
  • 你当前的参数传递逻辑错误:将完整命令字符串作为单个参数传入,就算能执行lnk文件,参数也会被整体识别为第一个入参,执行逻辑不符合预期
解决方案

方案1:直接通过shell执行完整命令

因为你给出的命令在cmd中可以直接正常运行,开启shell=True参数让系统shell自动解析lnk指向、拆分参数即可:

import subprocess

# 直接传入命令行可正常执行的完整命令
cmd = "FlashProgrammer -target=arm image.elf -device=xxxx -vdd=3V3 -erase=mass -program - secure"
subprocess.run(cmd, shell=True, check=True)

方案2:显式指定lnk路径调用

如果需要指定固定的lnk文件路径,通过cmd /c前缀启动cmd进程来执行lnk即可,参数需要按规则拆分为列表:

import subprocess

# 支持传入lnk的绝对路径,比如 r"C:\xxx\FlashProgrammer.lnk"
flash_programmer_path = "FlashProgrammer.lnk"
args = [
    "-target=arm",
    "image.elf",
    "-device=xxxx",
    "-vdd=3V3",
    "-erase=mass",
    "-program",
    "-secure"
]

subprocess.run(["cmd", "/c", flash_programmer_path] + args, check=True)
注意事项
  • 如果lnk文件不在Python脚本的当前工作目录,需要传入lnk的绝对路径,避免文件找不到的错误
  • 注意你给出的原始命令中-program和secure之间多了空格,如果实际参数应为-secure请修正拼写,避免执行失败
  • check=True参数会在命令执行返回非0退出码时主动抛出异常,方便快速定位执行阶段的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:15:03