代码之家  ›  专栏  ›  技术社区  ›  jessefriend

从父文件列表中列出子文件Google Drive SDK

  •  1
  • jessefriend  · 技术社区  · 7 年前

    我想知道是否有可能 list 父文件夹中的子文件数,如下所示。我正在查找包含特定搜索条件的父文件夹,然后当这些文件夹位于 列表 ,我正在循环查找这些文件夹中的所有文件。问题是使用变量 folder_id 在里面 files.list() 输入a string 属于 "folder_id" ,而不是实际值 folder id . 当我手动输入 id ,它运行得很好。

    def get_file_ids(service, search=None, max_files=250):
    
    folder_ids= {}
    file_ids = {}
    response = service.files().list(q="mimeType='application/vnd.google-apps.folder'",
                                         spaces='drive',
                                         fields='nextPageToken, files(id, name)').execute()
    items = response.get('files', [])     
    
    if not items:
        print('No files found.')
        return None
    
    
    for item in items:
        #print('{0} ({1})'.format(item['name'], item['id']))
        if search is None or item['name'].find(search) > -1:
            folder_ids[item['id']]=item['id']        
    
    for folder_id in folder_ids:
        children = service.files().list(q="'folder_id' in parent", fields='nextPageToken, files(id, name)').execute()
    
        for child in children.get('files', []):
            file_ids[child['name']]=child['id'] 
    
    
    return file_ids
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jason Lock    7 年前

    子查询不包括文件夹ID。查询如下所示:

    'folder_id' in parent
    

    应该是这样的时候:

    '12312' in parents
    

    尝试 updating 孩子们 query 要包括文件夹ID,例如:

    query = "'{}' in parents".format(folder_id)
    children = service.files().list(q=query, 
                                    fields='nextPageToken, files(id, name)').execute()