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

运行Python动作识别数据集目录创建代码报FileNotFoundError错误如何解决

问题原因

报错触发点为dirmax = np.max(np.array(os.listdir(os.path.join(DATA_PATH, action))).astype(int))这行代码:你的逻辑默认MP_Data根目录、以及每个动作对应的子目录已经存在,但首次运行时这些目录都还没有被创建,读取不存在路径的目录列表自然会抛出文件找不到错误。除此之外就算目录已创建,如果目录为空,调用np.max处理空数组也会抛出异常。

解决方法

调整代码逻辑,增加目录不存在时的自动创建逻辑,同时兼容空目录场景:

  • 首先创建根目录MP_Data,已存在则直接跳过
  • 遍历每个动作类别时,先判断对应动作的子目录是否存在,不存在则先创建
  • 读取目录列表后先判断是否为空,空目录直接用你定义的start_folder作为初始序号,非空则取现有文件夹的最大序号
修正后的完整代码
import os
import numpy as np

# 导出的numpy数组格式数据的存储路径
DATA_PATH = os.path.join('MP_Data') 

# 待检测的动作类别
actions = np.array(['hello', 'thanks', 'iloveyou'])

# 每个动作采集30组视频数据
no_sequences = 30

# 每组视频包含30帧
sequence_length = 30

# 文件夹起始序号
start_folder = 30

# 新增:先创建根目录,已存在则跳过
os.makedirs(DATA_PATH, exist_ok=True)

for action in actions: 
    action_path = os.path.join(DATA_PATH, action)
    # 新增:先创建当前动作对应的子目录,已存在则跳过
    os.makedirs(action_path, exist_ok=True)
    # 获取当前动作目录下的所有文件夹名
    dir_list = os.listdir(action_path)
    if not dir_list:
        # 目录为空时用预设的起始序号
        dirmax = start_folder
    else:
        # 非空则计算现有文件夹的最大序号
        dirmax = np.max(np.array(dir_list).astype(int))
    for sequence in range(1,no_sequences+1):
        try: 
            os.makedirs(os.path.join(action_path, str(dirmax+sequence)))
        except:
            pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:06:05