PyDrive列出文件夹子项时如何对返回的文件列表进行排序
PyDrive获取文件列表的排序实现方案
结论
完全支持按指定规则排序,共有两种实现方式:调用Drive API时直接指定排序参数、拿到返回结果后本地自定义排序。
方案1:API层面直接排序(推荐)
PyDrive封装的Google Drive API原生支持orderBy查询参数,无需额外处理返回结果,性能更高。
支持的常用排序字段如下:
title:文件/文件夹名称modifiedDate:最后修改时间createdDate:文件创建时间fileSize:文件占用空间大小
排序规则:
- 默认升序,直接填写字段名即可
- 需降序排序时,在字段名后加空格加
desc后缀即可
修改后的代码示例:
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive gauth = GoogleAuth() gauth.LocalWebserverAuth() drive = GoogleDrive(gauth) def get_children(root_folder_id, order_by='title'): query_str = "'" + root_folder_id + "'" + " in parents and trashed=false" # 传入orderBy参数实现排序 file_list = drive.ListFile({'q': query_str, 'orderBy': order_by}).GetList() return file_list # 调用示例:按最后修改时间降序获取文件列表 # files = get_children('你的文件夹ID', order_by='modifiedDate desc') # 调用示例:按文件名升序获取文件列表 # files = get_children('你的文件夹ID', order_by='title')
方案2:本地自定义排序
如果有API不支持的自定义排序规则,可以拿到返回的文件列表后,用Python原生的sorted函数自行排序:
代码示例:
def get_children(root_folder_id): query_str = "'" + root_folder_id + "'" + " in parents and trashed=false" file_list = drive.ListFile({'q': query_str}).GetList() # 示例1:按文件名升序排序 sorted_by_title = sorted(file_list, key=lambda file: file['title']) # 示例2:按最后修改时间降序排序 sorted_by_modified = sorted(file_list, key=lambda file: file['modifiedDate'], reverse=True) # 按需返回对应排序后的列表即可 return sorted_by_title
内容的提问来源于stack exchange,提问作者Luk Aron
相关产品推荐
相关产品推荐

