获取数据与更新数据

python SDK 获取数据集管理系统的数据,并对获取到的数据进行更新处理

全局的TDA对象提供了数据检索的功能,方便您按照条件检索查询您已经同步到数据集管理系统的数据。

分页检索数据

tda.GetData(offset=0, limit=100, metaKey="", metaValue="", label="", sensor="")

以上所有检索条件均为并列(and)关系

返回结果为一个dict

分页检索更类似文件列表的检索,所以检索结果无标注结果,要取得标注结果需按fid检索数据。样例代码:

page = 0
limit = 100
while True:
    offset = page * limit
    fileData = tda.GetData(offset, limit)
    if len(fileData["files"]) <= 0:
        break
    page += 1
    for file in fileData["files"]:
        #文件的相关信息
        print(file.fid)#文件fid
        print(file.name)#文件basename
        print(file.referId)#文件ref_id
        print(file.metaData)#文件meta信息
        print(file.md5)#文件md5
        print(file.path)#文件oss路径
        print(file.url)#文件临时可访问地址
        print(file.size)#文件大小
        print(file.frameId)#融合数据的frameId
        print(file.sensor) #融合数据的sensor
        print(file.createAt)#文件上传时间,unix 时间戳
        print(file.updateAt)#文件上次更新时间, unix 时间戳  
        
        print(file.ToList())#将数据转为list,方便使用
        
        #下载这个文件
        res = requests.get(file.url)
        with open('/path/to/saveFile', 'wb') as f:
            f.write(res.content)

        #删除这个文件及相关信息
        print(file.Delete())
                       

按fid或者referId(ref_id)检索数据

tda.GetFileAndLabel(fid="", referId="")

fid 检索优先级会高于ref_id,当fid和referId同事设置时,会优先按fid检索

返回结果为testindata.dataset.updatefile.UpdateFile 的对象,该对象包含本次检索文件的所有信息。

file = tda.GetFileAndLabel(fid="fs_wB2HyED8iCxm9EqrUE0_")
print(file.anotations.labels)#该文件的所有标注结果
print(file.fid)#文件fid
print(file.name)#文件basename
print(file.referId)#文件ref_id
print(file.metaData)#文件meta信息
print(file.md5)#文件md5
print(file.path)#文件oss路径
print(file.url)#文件临时可访问地址
print(file.size)#文件大小
print(file.frameId)#融合数据的frameId
print(file.sensor) #融合数据的sensor
print(file.createAt)#文件上传时间
print(file.updateAt)#文件上次更新时间   

print(file.ToList())#将数据转为list,方便您使用

#下载这个文件
res = requests.get(file.url)
with open('/path/to/saveFile', 'wb') as f:
    f.write(res.content)

#删除这个文件及相关信息
print(file.Delete())

更新数据

我们可以利testindata.dataset.updatefile.UpdateFile 对象该对该文件的数据做更新操作。目前更新仅支持以下字段:

示例代码:

updateFile = tda.GetFileAndLabel(fid="fs_wB2HyED8iCxm9EqrUE0_")

updateFile.referId = "test_refer_id"
updateFile.metaData = {
    "key1":"test_val"
}

updateFile.name = "23333.jpg"

updateFile.sensor = "camera_1"
updateFile.frameId = "test_frame_id"

box = {
    "x": 10,
    "y": 10,
    "width": 100,
    "height": 100,
}

label = "myTestLabelName"

attr = {
    "attrKey1":"attrVal1",
    "attrKey2":"attrVal2",
    "attrKey3":"attrVal3",
}

updateFile.AddBox2D(box, label=label, attrs=attr)

print(updateFile.Update())

方法返回为一个dict

{'file_succ': 1, 'file_fail': 0, 'anotations_succ': 1, 'anotations_fail': 0}

对标注结果的更新是一个覆盖更新的过程,最终仅会保留本次更新的结果,请谨慎操作

Last updated