Skip to content

4.9 文件管理

概述

FileManager 用于在上位机和机器人控制器之间上传、下载、删除或搜索程序、轨迹及临时文件等资源,支持多种文件类型的管理和操作。

核心功能

  • 支持本地文件上传到机器人控制器
  • 支持机器人文件下载到本地目录
  • 支持从机器人控制器删除文件
  • 支持按文件名模式搜索文件
  • 支持多种文件类型管理(USER_PROGRAM、BLOCK_PROGRAM、TRAJECTORY、ROBOT_TMP)
  • 支持上传 / 下载时的覆盖控制

使用场景

  • 部署程序到机器人控制器
  • 备份机器人上的程序和轨迹文件
  • 同步调试产线数据
  • 批量管理和查询机器人文件
  • 上传临时数据文件到机器人
  • 下载机器人日志或输出文件到本地

4.9.1 上传本地文件到机器人

方法名file_manager.upload( file_path : str, file_type : str, overwriting : bool = False) -> StatusCodeEnum
描述将本地文件上传到机器人控制器
请求参数file_path : str 本地文件绝对路径。
file_type : str 文件类型 (USER_PROGRAM: file_path 为程序名路径,上传同目录 json / xml ;BLOCK_PROGRAM: file_path 为积木程序名路径,上传同目录 block / json / xml ;TRAJECTORY: file_path 为完整轨迹文件路径;ROBOT_TMP: file_path 为完整临时文件路径)。
overwriting : bool 是否覆盖同名文件 (默认 False )。
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+
备注USER_PROGRAMBLOCK_PROGRAM 上传时仅填写程序名(即程序文件名,不含后缀)。

4.9.2 下载机器人文件到本地

方法名file_manager.download( file_name : str, file_path : str, file_type : str, overwriting : bool=False) -> StatusCodeEnum
描述将机器人上的文件下载到本地目录。
请求参数file_name : str 文件名。
file_path : str 本地保存目录。
file_type : str 文件类型 ( BLOCK_PROGRAM 暂不支持下载)。
overwriting : bool 是否覆盖同名文件。
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+
备注USER_PROGRAM 下载时仅填写程序名(即程序文件名,不含后缀),系统会下载对应 .json / .xmlTRAJECTORY 请填写带 .trajectory 的完整文件名; ROBOT_TMP 请填写带后缀的完整文件名(如 .csv )。

4.9.3 删除机器人上的文件

方法名file_manager.delete( file_name : str, file_type : str) -> StatusCodeEnum
描述从机器人控制器删除文件。
请求参数file_name : str 要删除的文件名。
file_type : str 文件类型。
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+
备注USER_PROGRAM / BLOCK_PROGRAM 删除时仅填写程序名(即程序文件名,不含后缀); TRAJECTORY / ROBOT_TMP 请填写带后缀的完整文件名。

4.9.4 按文件名模式搜索文件

方法名file_manager.search( pattern : str, file_list : list) -> StatusCodeEnum
描述在控制器上按文件名模式搜索文件。
请求参数pattern : str 文件名匹配模式
file_list : list 输出列表,用于接收匹配到的文件名
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

示例代码

file_manager/file_manager.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: 文件操作, 上传下载示例 / Example of file operation, upload and download
"""

from pathlib import Path

from Agilebot import ROBOT_TMP, TRAJECTORY, USER_PROGRAM, FileManager, StatusCodeEnum

current_path = Path(__file__)
path = str(current_path)

# [ZH] 连接文件管理服务
# [EN] Connect to the file management service
file_manager = FileManager("10.27.1.254")

# [ZH] 上传其他文件
# [EN] Upload other files
tmp_file_path = path.replace("file_manager.py", "test.csv")
ret = file_manager.upload(tmp_file_path, ROBOT_TMP, True)
if ret == StatusCodeEnum.OK:
    print("文件上传成功 / File upload successful")
else:
    print(f"文件上传失败,错误代码 / File upload failed, error code: {ret.errmsg}")
    exit(1)

# [ZH] 上传程序
# [EN] Upload a program
prog_file_path = path.replace("file_manager.py", "test_prog")
ret = file_manager.upload(prog_file_path, USER_PROGRAM, True)
if ret == StatusCodeEnum.OK:
    print("程序上传成功 / Program upload successful")
else:
    print(f"程序上传失败,错误代码 / Program upload failed, error code: {ret.errmsg}")
    exit(1)

# [ZH] 上传轨迹
# [EN] Upload a trajectory
trajectory_file_path = path.replace("file_manager.py", "test_torque.trajectory")
ret = file_manager.upload(trajectory_file_path, TRAJECTORY, True)
if ret == StatusCodeEnum.OK:
    print("轨迹上传成功 / Trajectory upload successful")
else:
    print(f"轨迹上传失败,错误代码 / Trajectory upload failed, error code: {ret.errmsg}")
    exit(1)

# [ZH] 搜索文件
# [EN] Search for files
file_list = list()
ret = file_manager.search("test.csv", file_list)
if ret == StatusCodeEnum.OK:
    print("文件搜索成功 / File search successful")
else:
    print(f"文件搜索失败,错误代码 / File search failed, error code: {ret.errmsg}")
    exit(1)
print("搜索文件:", file_list)

# [ZH] 下载文件
# [EN] Download a file
download_file_path = path.replace("file_manager.py", "download")
ret = file_manager.download("test_torque", download_file_path, file_type=TRAJECTORY)
if ret == StatusCodeEnum.OK:
    print("文件下载成功 / File download successful")
else:
    print(f"文件下载失败,错误代码 / File download failed, error code: {ret.errmsg}")
    exit(1)

# [ZH] 删除文件
# [EN] Delete a file
ret = file_manager.delete("test_torque.trajectory", TRAJECTORY)
if ret == StatusCodeEnum.OK:
    print("文件删除成功 / File delete successful")
else:
    print(f"文件删除失败,错误代码 / File delete failed, error code: {ret.errmsg}")
    exit(1)