如何列出特定谷歌驱动器目录中的所有文件Python

ben*_*890 1 python google-drive-api

按文件夹 ID 列出特定 google 驱动器目录的所有文件的最佳方法是什么?如果我构建如下所示的服务,下一步是什么?找不到任何对我有用的东西。此示例中的 Service_Account_File 是一个带有令牌的 json 文件。

SCOPES = ['https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = service_account_file 
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = discovery.build('drive', 'v3', credentials=credentials)
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 5

我相信你的目标如下。

  • 您想要使用 python 的服务帐户检索特定文件夹下的文件列表。

在这种情况下,我想提出以下两种模式。

模式一:

在此模式中,使用 Drive API with googleapis for python 中的“Files: list”方法。但在这种情况下,不会检索特定文件夹中的子文件夹中的文件。

from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = service_account_file
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('drive', 'v3', credentials=credentials)

topFolderId = '###' # Please set the folder of the top folder ID.

items = []
pageToken = ""
while pageToken is not None:
    response = service.files().list(q="'" + topFolderId + "' in parents", pageSize=1000, pageToken=pageToken, fields="nextPageToken, files(id, name)").execute()
    items.extend(response.get('files', []))
    pageToken = response.get('nextPageToken')

print(items)
Run Code Online (Sandbox Code Playgroud)
  • q="'" + topFolderId + "' in parents"表示在 . 文件夹下检索文件列表topFolderId
  • 使用时pageSize=1000,可以减少Drive API的使用次数。

模式2:

在此模式中,使用了getfilelistpy库。在这种情况下,还可以检索特定文件夹中的子文件夹中的文件。首先,请按如下方式安装库。

$ pip install getfilelistpy
Run Code Online (Sandbox Code Playgroud)

示例脚本如下。

from google.oauth2 import service_account
from getfilelistpy import getfilelist

SCOPES = ['https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = service_account_file
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)

topFolderId = '###' # Please set the folder of the top folder ID.
resource = {
    "service_account": credentials,
    "id": topFolderId,
    "fields": "files(name,id)",
}
res = getfilelist.GetFileList(resource)
print(dict(res))
Run Code Online (Sandbox Code Playgroud)
  • 在此库中,可以使用 Drive API 中的“Files: list”方法通过 googleapis for python 搜索特定文件夹中的子文件夹。

参考: