Как искать определенные файлы на Google диске?

#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, а не ошибку. Поэтому простое тестирование на наличие возвращенных файлов покажет вам, найдены эти файлы или нет.