#python #python-3.x #google-api #google-drive-api #google-api-python-client
Вопрос:
Я взял этот код с сайта разработчика Google, внес в него некоторые изменения. Но я хочу найти файлы, которые присутствуют на Google диске. Я не знаю, где дать folder id
, чтобы найти файлы?. Если они существуют, то okay, the files are found
отправьте сообщение. Если нет, то files are not found
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
SCOPES = ['https://www.googleapis.com/auth/drive']
def main():
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('drive', 'v3', credentials=creds)
filename = 'Image'
page_token = None
while True:
response = service.files().list(q="name contains '" filename "'",
spaces='drive',
fields='nextPageToken, files(id, name)',
pageToken=page_token).execute()
for file in response.get('files', []):
# Process change
print('Found file: %s (%s)' % (file.get('name'), file.get('id')))
page_token = response.get('nextPageToken', None)
if page_token is None:
break
if __name__ == '__main__':
main()
Комментарии:
1. О
I want is to search for the files that are present in Google drive.
, можете ли вы предоставить примеры входных значений для поиска файлов? И, примерноI don't know where to give the folder id to find the files?
, в этом случае вы хотите выполнить поиск файлов в определенной папке? Если это так, то в вашей ситуации вы хотите также выполнить поиск файлов в подпапках в определенной папке?
Ответ №1:
Я хочу найти файлы, которые присутствуют на Google диске.
Делаю обычный файл.список вернет все файлы в корневом каталоге вашего Google диска без особого порядка.
Я не знаю, где указать идентификатор папки, чтобы найти файлы?.
Чтобы выполнить поиск всех файлов в определенной папке, Вам нужно будет использовать parents in
параметр Q поиска.
response = service.files().list(q="parents in '" Folder ID "'",
spaces='drive',
fields='nextPageToken, files(id, name)',
pageToken=page_token).execute()
Я рекомендую сделать что-то вроде следующего, чтобы сначала выполнить поиск папки, и это поможет вам найти идентификатор файла папки, который вы можете использовать в приведенном выше запросе.
response = service.files().list(q="name = '" folder name "' and mimeType = 'application/vnd.google-apps.folder'",
spaces='drive',
fields='nextPageToken, files(id, name)',
Возможно, вы захотите проверить Поиск файлов и папок, в нем есть несколько интересных примеров.
Если они существуют, то хорошо, файлы найдены сообщением. Если нет, то файлы не найдены
Если вы ищете конкретное имя файла, и это имя не существует, вы, вероятно, получите пустой ответ от API, а не ошибку. Поэтому простое тестирование на наличие возвращенных файлов покажет вам, найдены эти файлы или нет.