Skip to content

0x03 数据格式

ZaxTyson edited this page Mar 3, 2020 · 1 revision

格式变化

以前 API 返回的数据格式为 dictlist,调用后需要使用大量 [''] 取值,使用不便;从 list 中获取特定元素也很麻烦。所以 v2.4.0 开始,接口返回的数据格式发生了变化。

  • dict 变为 namedtuple,key 与之前一致,只是访问方式发生变化: 由 result['x']['y'] 变为 result.x.y
  • list 变为 ItemList,处理数据时更加方便。可作为 list 使用,同时支持其它方法操作元素。

namedtuple

以前返回文件夹信息:

{'name': 'abc', 'id': 123, 'has_pwd': True, 'desc': 'xxxx'}

现在返回:

Folder(name='abc', id=123, has_pwd=True, desc='xxxx')

通过 Obj.attr 方式访问,简化代码中的 ['']

所有 namedtuple 定义见: lanzou.api.types

ItemList

存放 namedtuple 的容器,保存的元素至少具有 name 、id 两个属性。

它能够作为 list 使用,同时支持其它方法,以便获取、操作特定元素。

<List Folder(name='github', id=837574, has_pwd=False, desc='Github Download'), Folder(name='share', id=879591, has_pwd=False, desc='文件分享'), Folder(name='Music', id=1387639, has_pwd=False, desc='网易云音乐')>

方法

  • ListObj.append(item) 方法在列表末尾插入追加 item
  • ListObj.insert(pos, item) 方法在 pos 位置插入元素 item
  • ListObj.index(item) 方法获取元素 item 位置
  • ListObj.clear() 方法清空列表
  • ListObj.filter(func) 方法从列表中筛选出使得 func(item) 为 True 的子列表
  • ListObj.find_by_name(name_) 方法返回列表中首个 name 属性为 name_ 的元素
  • ListObj.find_by_id(id_) 方法返回列表中 id 属性为 id_ 的元素
  • ListObj.pop_by_id(id_) 方法返回列表中 id 属性为 id_ 的元素,同时从列表中删除
  • ListObj.update_by_id(id_, **kwargs) 方法更新列表中 id 属性为 id_ 元素的值

属性

  • ListObj.all_name 属性是所有元素的 name 组成的 list
  • ListObj.name_id 属性是所有元素的 name: id 组成的 dict

FileList

继承自 ItemList,用于保存与文件相关的 namedtuple

FolderList

继承自 ItemList,用于保存与文件夹(目录)相关的 namedtuple

Clone this wiki locally