跳转至

Loop

Loop 插件

Loop 插件用于循环执行流程,直到条件不满足为止(即上下文中的文件列表为空时结束循环)。

🔗 上下文

上下文 类型 描述 默认值
load_key str 要循环处理的文件列表 'default'

⚙ 配置

LoopPluginConfig

LoopPluginConfig

auto_unpack.plugins.control.loop.LoopPluginConfig

名称 类型 描述 默认值
⭐ name Literal['loop'] 插件名称,固定为 'loop' 'loop'
steps List[Any] 需要循环执行的步骤,同 flow.steps 一样 []
max_loops int 最大循环次数,-1:不限制 1024
loop_interval int 循环间隔时间,单位:秒 1
上下文字段见上文

♻ 示例

解压嵌套压缩的文件

flow:
  steps:
    # 将压缩文件拷贝到 output 目录,并保存到上下文中
    - name: scan
      dir: archive
    - name: archive
      mode: list
    - name: transfer
      mode: copy
      target_dir: output

    # 循环结束条件:
    # 上下文中文件数量为0时结束循环
    - name: loop
      # 最大循环次数, 防止意外死循环
      max_loops: 10
      # 执行步骤 同: flow.steps 一样
      steps:

        # 解压上下文中的压缩文件,并将解压后的文件放到 output 目录
        - name: archive
          mode: extract
          target_dir: output
          stat_file_name: extract

        # 删除解压成功的压缩包
        # 这里需要将已经解压的文件移到其他目录/删除
        # 防止循环中重复解压
        - name: remove

        # 再次重新扫描 output 目录, 并识别是否有新的压缩包
        - name: scan
          dir: output
        # 过滤掉普通文件(也可通过文件大小筛选),减少识别压力
        - name: filter
          rules:
            - mode: glob
              excludes:
                - '*.txt'
                - '*.jpg'
        - name: archive
          mode: list

    # 循环结束后,清理 output 目录中的空文件夹
    - name: empty
      dir: output