Windows下Python subprocess.Popen打开程序报找不到文件错误如何解决
错误原因
- 代码中传入的
open是macOS、Linux环境下用来启动程序、打开文件的终端命令,Windows系统命令行中不存在这个命名的可执行文件,subprocess创建进程时找不到open对应的文件,直接抛出FileNotFoundError,该报错和计算器程序的存储路径无关。 - 本质是跨平台命令混用导致的问题:三个主流桌面系统的默认唤起命令完全不同,macOS用
open、Linux桌面版通用xdg-open、Windows用内置的start,直接照搬其他系统的命令必然报错。
可行修复方案
根据使用场景二选一即可:
- 直接启动可执行程序
计算器本身是独立的exe可执行文件,不需要额外套系统启动命令,直接把程序路径传入Popen就能正常拉起:import subprocess # 双反斜杠转义的写法 subprocess.Popen('C:\\Windows\\System32\\calc.exe') # 也可以用原生字符串省略转义,效果完全一致 # subprocess.Popen(r'C:\Windows\System32\calc.exe') - 调用Windows系统默认打开逻辑
如果后续需要打开非可执行类型的目标(比如txt文档、文件夹、网页链接),可以用Windows内置的start命令,注意start是cmd的内置命令,必须加shell=True参数才能正常调用:import subprocess subprocess.Popen(['start', r'C:\Windows\System32\calc.exe'], shell=True)
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

