Проблемы с загрузкой CSV-файлов с Google Диска - PullRequest
0 голосов
/ 20 марта 2019

Мне кажется, я не понимаю, что я делаю неправильно. Я подключился к API Google Диска, и теперь я хотел бы прочитать несколько документов на моем диске Google с целью анализа данных, содержащихся в этих CSV-файлах.

Это код, который у меня есть:

from __future__ import print_function
import pickle
import os.path
from httplib2 import Http
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/Users/emmanuelsibanda/credentials.json"
# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
creds = None
if os.path.exists('token.pickle'):
  with open('token.pickle', 'rb') as token:
    creds = pickle.load(token)
    # 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()
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('drive', 'v3', credentials=creds)

def gdrive_download(file_id):
  request = service.files().get(fileId=file_id)
  return request.execute()
a = gdrive_download('19sPsANUblhXkb3nZVy4PMrfUyOSoF_uQ')

Просто повторюсь, я хотел бы загрузить несколько файлов CSV, а затем приступить к чтению файлов.

1 Ответ

1 голос
/ 20 марта 2019

В Drive метаданные файла отделены от его содержимого. Вы запросили metadata.readonly область действия, что неудивительно, что только доступ к метаданным. Ваш звонок files().get затем получает метаданные.

Чтобы получить контент, сначала нужно выбрать более разрешающую область. Затем вы получите содержимое. То, как вы это сделаете, зависит от того, является ли файл двоичным файлом или документом Google (например, электронной таблицей).

Бинарный файл можно загрузить, добавив alt=media к URL-адресу.

Файл Google можно экспортировать, добавив /export?mimeType=text/csv к URL-адресу.

См. https://developers.google.com/drive/api/v3/manage-downloads для деталей и примеров кода.

...