如何定期删除指定文件夹下的文件

本文档介绍如何通过编写集成流 Python 代码,使用 Mobi Python SDK 的服务删除指定文件夹下的文件,并配置定时任务触发器实现定期删除。

步骤一 新建集成流并配置 API Key

新建魔笔集成流,在集成流的左侧中选择全局配置,配置全局 API Key。关于如何创建 API Key 请参考管理 API Keyimage

步骤二 新建 Python 节点编写代码

新建集成操作节点,操作类型选择脚本,语言选择 Python

image

在代码中输入以下代码:

# 引入 Mobi Python SDK
from mobi_baas.client import MobiClient
from mobi_baas.models import PageFilesByFolderRequest, DeleteFileRequest
# 从起始节点 start 的 data 里获取输入参数 folderId
folder_id = start["data"]["folderId"]
# 创建 MobiClient 实例
client = MobiClient()
# 调用 page_files_by_folder 接口
resp = client.page_files_by_folder(PageFilesByFolderRequest(folder_id=folder_id, page_size=500, page_number=1))
# 获取文件列表失败
if not resp.success:
    return "Page files by folder failed, reason: " + resp.get_data()['message']
# 获取文件夹下所有的文件对象
files = resp.get_data()["items"]
# 存储所有删除失败的文件 ID
file_deleted_failed_list = []
for file in files:
    del_resp =client.delete_file(DeleteFileRequest(file_id=file["fileId"]))
    if not del_resp.success:
        file_deleted_failed_list.append(file["fileId"])
if len(file_deleted_failed_list) > 0:
    return file_deleted_failed_list
else:
    return "All files deleted"

步骤三 配置开始节点和返回节点

配置开始节点的入参folderId

image

配置返回节点的返回值为上一个节点的 data,例如图中上一个节点为集成操作节点ActionStep_CkfW,则返回值配置为ActionStep_CkfW.dataimage

步骤四 测试集成流

魔笔的文件资源中选择一个要删除的文件夹,点击更多选项,选择复制文件夹 ID。image

在集成流的开始节点中,配置模拟参数folderId为刚才复制文件夹 ID。image

点击运行进行集成流的测试。image

步骤五 配置定时任务触发器

将集成流进行发布后,添加触发器,选择定时任务类型,输入参数配置为{"folderId":"your_folder_id"}的 JSON 格式。时间为 CRON 表达式配置。例如下面的配置为每日 23:59 触发执行。image

配置完成点击保存,打开发布的集成流对应的环境开关,启动触发器。image