Я использую 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()
Я не уверен, что может быть не так с приведенным выше кодом. Может ли кто-нибудь помочь мне исправить это?
Спасибо!






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. Что вы подразумеваете под: предоставили ли вы общий доступ к каталогу своей учетной записи службы? Если нет, то у него нет доступа и он их не видит. Точно так же, как я не смог бы увидеть это, даже если бы искал.