Получение FolderID и имени папки внутри определенной папки на Google Диске

Я использую Colab в Python, чтобы получить идентификатор папки и имя папки внутри определенной папки myProject с Google Диска.

Структура папок такая:

Google Drive (When I open drive.google.com I see the below folder structure)
   myProject
    ImageToDoc
        images

Я подключил диск, и он сказал, что успешно.

Но я всегда получаю «Нет идентификатора папки и имени папки». Я знаю, что есть папки и файлы, имя папки тоже правильное.

это код, который я пытаюсь:

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

json_key_path = '/content/drive/My Drive/myProject/credentials.json'

if not os.path.exists(json_key_path):
    print("JSON key file not found.")
    exit()

credentials = service_account.Credentials.from_service_account_file(json_key_path)

drive_service = build('drive', 'v3', credentials=credentials)

def get_folder_id_by_name(folder_name, parent_folder_id='root'):
    response = drive_service.files().list(
        q=f"name='{folder_name}' and mimeType='application/vnd.google-apps.folder' and '{parent_folder_id}' in parents",
        fields='files(id)').execute()
    items = response.get('files', [])
    if items:
        return items[0]['id']
    else:
        return None

def list_folders_in_my_project():
  
    my_project_folder_id = get_folder_id_by_name("myProject", parent_folder_id='root')
    print("myProjectfolder ID:", my_project_folder_id)
    
    if not my_project_folder_id:
        print("myProject folder not found.")
        return
    
    response = drive_service.files().list(
        q=f"'{my_project_folder_id}' in parents and mimeType='application/vnd.google-apps.folder'",
        fields='files(name)').execute()
    
    print("API Response:", response)
    
    folders = response.get('files', [])
    if folders:
        print("Folders inside myProject folder:")
        for folder in folders:
            print(f"Folder Name: {folder['name']}")
    else:
        print("No folders found inside myProject folder.")

list_folders_in_my_project()

Я не уверен, что может быть не так с приведенным выше кодом. Может ли кто-нибудь помочь мне исправить это?

Спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Google Диск (когда я открываю сайтdrive.google.com, я вижу структуру папок ниже)
мойПроект
ImageToDoc
изображения

Похоже, вы открываете веб-приложение Google Диска из своей учетной записи.

Однако ваш код говорит, что вы используете сервисную учетную запись.

credentials = service_account.Credentials.from_service_account_file(json_key_path)

Вы поделились каталогом со своей учетной записью службы? Если нет, то у него нет доступа и он их не видит. Точно так же, как я не смог бы увидеть это, даже если бы искал.

Гугл диск и колаб

Честно говоря, я все равно не понимаю, почему вы используете сервисную учетную запись в Colab. Если только вы действительно не хотите использовать API-интерфейс Google Drive, в этом случае все готово.

Вы можете просто подключить свою учетную запись Google Диска в Colab.

from google.colab import drive
drive.mount('/content/drive')
DRIVE_PREFIX = "/content/drive/MyDrive"

Я пытаюсь получить доступ к файлам из Google Colab. Что вы подразумеваете под: предоставили ли вы общий доступ к каталогу своей учетной записи службы? Если нет, то у него нет доступа и он их не видит. Точно так же, как я не смог бы увидеть это, даже если бы искал.

Sanjana Nair 23.03.2024 13:48

Я дал разрешение на папку, и она работает.

Sanjana Nair 23.03.2024 13:53

Быстрый вопрос: эти папки и файлы доступны только мне или всем, у кого есть доступ к файлу записной книжки для совместной работы?

Sanjana Nair 23.03.2024 13:54

Они доступны любому, у кого есть ключевой файл вашей учетной записи службы. Помните, что нельзя делиться этим.

Linda Lawton - DaImTo 23.03.2024 16:04

Другие вопросы по теме