YOLOv5-Flask项目前端上传文件报错:subprocess执行ls命令失败
问题分析
从报错信息可以明确,错误出现在app.py第26行的subprocess.run("ls")调用中——Windows系统不存在ls命令(ls是Linux/macOS专属的终端目录查看命令),导致系统无法找到指定执行文件,抛出FileNotFoundError。
解决方案
针对该问题,可采用以下几种解决方式:
替换为Windows兼容命令:将
ls替换为Windows对应的目录查看命令dir,修改代码为:subprocess.run("dir", shell=True)需添加
shell=True参数,让Windows的cmd解释执行该命令。使用跨平台Python内置方法:避免依赖系统终端命令,直接用Python内置模块实现目录查看,兼容性更强:
# 用os模块 import os print(os.listdir(".")) # 列出当前目录所有文件/文件夹 # 或用pathlib(更推荐的现代写法) from pathlib import Path print([item.name for item in Path(".").iterdir()])添加系统判断逻辑:如果需要保留subprocess调用,可先判断操作系统,再选择对应命令:
import subprocess import sys if sys.platform.startswith('win32'): subprocess.run(["dir"], shell=True) else: subprocess.run(["ls"])
内容的提问来源于stack exchange,提问作者user23373750
相关产品推荐
相关产品推荐

