更新时间:2024-05-14 GMT+08:00
分享

接口调用下载

体积计算的结果存放在华为云的云存储服务OBS上,用户需要从指定的OBS路径下载,具体步骤如下:

  1. 获取华为云账号的访问密钥(AK/SK),若本地已保存密钥,可跳过本步骤。
  2. 获取体积计算结果的下载路径。

    获取体积计算作业详情的响应outputs,获取“体积计算结果“的OBS URL:

    outputs": {
            "BATCH_VOL_RESULT_OBS": {
                "paths": [
                    "obs://{BUCKET_NAME}/{MEASURE_SPACE_NAME}/{COLLECT_BATCH_ID}/{JOB_ID}/volume_result"
                ]
            }
        },
  3. 使用OBS工具,用户可参照obsutil使用指南,结合从步骤1获取的访问密钥下载体积结果。
  4. 对文件参照下述格式进行解析,得到体积计算结果。
    # 导入必要的库
    import json
    import os
    
    # 定义一个简单的结构体类来表示数据
    class DataItem:
        def __init__(self, name, result):
            self.name = name
            self.result = result
    
    # 定义下载文件的函数
    def download_file_from_obs(bucket_name, object_name, destination_file_path):
        # 这里使用obsutil命令行工具来下载文件
        os.system(f"obsutil cp obs://{bucket_name}/{object_name} {destination_file_path}")
    
    # 定义读取文件并反序列化JSON的函数
    def read_and_deserialize_json(file_path):
        with open(file_path, 'r') as file:
            data = json.load(file)
        return data
    
    # 将JSON数据反序列化为DataItem结构体列表的函数
    def deserialize_to_struct(json_data):
        struct_list = []
        for item in json_data:
            struct_list.append(DataItem(item['name'], item['result']))
        return struct_list
    
    # 主程序
    if __name__ == "__main__":
        # 从OBS下载result.txt文件
        download_file_from_obs('xxx', 'xxx/result.txt', 'result.txt')
        # 读取并反序列化JSON数据
        json_data = read_and_deserialize_json('result.txt')
        # 将JSON数据反序列化为结构体列表
        data_struct_list = deserialize_to_struct(json_data)
        # 打印结果
        for data_item in data_struct_list:
            print(f"name: {data_item.name}, result: {data_item.result}")

相关文档