Python Google Drive API, загрузка данных в память, а не файл на диск? - PullRequest
2 голосов
/ 21 апреля 2020

Я безуспешно искал форумы по моему вопросу.

Я пытаюсь использовать API Google Drive Python для загрузки файлов, которые у меня есть в памяти, на Google Drive. Тем не менее, все примеры, которые я видел, используют файл на диске с определенным путем к файлу и именем.

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

    media = MediaFileUpload(
        'MyFile.jpeg',
        mimetype='image/jpeg',
        resumable=True
    )
    request = service.files().create(
        media_body=media,
        body={'name': 'MyFile', 'parents': ['<your folder Id>']}
    )
    response = None
    while response is None:
        status, response = request.next_chunk()
        if status:
            print("Uploaded %d%%." % int(status.progress() * 100))
    print("Upload Complete!")

Однако я хочу сделать что-то вроде этого:

with open('MyFile.jpeg', 'rb') as FID: 
	fileInMemory = FID.read()
	
myGDriveUpload(fileInMemory)

#Pass jpeg file that has been read into memory
#to Google Drive for upload.

Файл будет в памяти из-за операций, которые я делаю, и было бы ненужно сохранять на диск, загружать файл, используя его путь к файлу, а затем удалять файл, который был временно сохранен на диске.

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

Спасибо

1 Ответ

3 голосов
/ 22 апреля 2020
  • Вы хотите выгрузить данные в памяти на Google Drive, используя googleapis с python.
  • Вы хотите использовать fileInMemory следующего скрипта.

    with open('MyFile.jpeg', 'rb') as FID: 
        fileInMemory = FID.read()
    
  • Вы уже можете загрузить файл с помощью Drive API.

В этом ответе я использовал «Class MediaIoBaseUpload» вместо «Class» MediaFileUpload ".

Пример сценария:

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

with open('MyFile.jpeg', 'rb') as FID:
    fileInMemory = FID.read()

media = MediaIoBaseUpload(io.BytesIO(fileInMemory), mimetype='image/jpeg', resumable=True)
request = service.files().create(
    media_body=media,
    body={'name': 'MyFile', 'parents': ['<your folder Id>']}
)
response = None
while response is None:
    status, response = request.next_chunk()
    if status:
        print("Uploaded %d%%." % int(status.progress() * 100))
print("Upload Complete!")

Ссылка:

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