Можем ли мы открыть файл на Google Drive в режиме чтения, используя python? - PullRequest
0 голосов
/ 22 января 2020

Я хочу прочитать файл в режиме чтения, который находится на диске Google. Можем ли мы использовать Drive-API, чтобы открыть его в режиме чтения вместо его загрузки?

Структура моей папки

user
    >1 
      >1.json

В этом примере я дошел до моего json файла и теперь вместо загрузки мне нужно прочитать содержимое файла в. json. Обычно мы используем with open('1.json') as f: в python, но как я могу читать и хранить содержимое с помощью DRIVE API

1 Ответ

0 голосов
/ 22 января 2020

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

Если вы имеете в виду не создание реального файла, вы можете попробовать использовать модуль io и сохраните его в памяти.

На самом деле есть примеры в документации Google :

file_id = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print "Download %d%%." % int(status.progress() * 100)

В этом случае мы создаем request с get_media() метод без его выполнения, после этого мы вводим запрос к MediaIoBaseDownload, этот класс отвечает за загрузку данных в виде кусков (в случае, если файл большой) в io.Base объект fh в этом фрагменте кода.


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

Так что, вероятно, в вашем случае просто выполните следующий код

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

    file_id = "<your file ID> "
    response = service.files().get_media(fileId=file_id).execute()

    print(response)

{

jola: "sadsa",

saas: 123

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...