Skip to content

4.9 文件管理

说明

FileManager 用于在上位机和机器人控制器之间上传、下载、删除或搜索程序、轨迹及临时文件等资源。通过 file_manager 接口可以批量管理 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 输入程序 “基名” 路径(例: /root/robot_data/test_prog ),会上传同目录下的 test_prog.jsontest_prog.xml 两个文件。
• BLOCK_PROGRAM: file_path 输入积木程序 “基名” 路径(例: /root/robot_data/test_block_prog ),会上传同目录下的 test_block_prog.blocktest_block_prog.jsontest_block_prog.xml 三个文件。
• TRAJECTORY: file_path 输入轨迹文件的完整路径(例: /root/robot_data/test_torque.trajectory ),会上传该 .trajectory 文件。
• ROBOT_TMP: file_path 输入临时文件的完整路径(例: /root/robot_data/test.csv ),会上传该文件。
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 文件名。不同类型要求如下:
・USER_PROGRAM:填写程序 “基名”(无需后缀),会下载对应的 .json.xml 两个文件。
・TRAJECTORY:填写完整文件名(含后缀 .trajectory )。
・ROBOT_TMP:填写完整文件名(含后缀,如 .csv 等)。
file_path : str 本地保存目录。
file_type : str 文件类型( BLOCK_PROGRAM 暂不支持下载)。
overwriting : bool 若目标路径存在同名文件,是否覆盖。
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

4.9.3 删除机器人上的文件

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

4.9.4 查找符合给定 pattern 的文件

方法名file_manager.search( pattern : str, file_list : list) -> StatusCodeEnum
描述在控制器上查找符合指定 pattern 的文件
请求参数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)