Python Загрузка Dropbox - Работа с ответом - PullRequest
0 голосов
/ 19 февраля 2020

Я не знаком с интерфейсом Dropbox API и использую Python 3.6

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

import os
import sys
from tqdm import tqdm
import dropbox

filenameonly = sys.argv[1]
filenamewithextension = sys.argv[2]
fullfilepath = sys.argv[3]

access_token = "removedforsecurity"

def dropboxupload(access_token,file_path,target_path,timeout=3600,chunk_size=150 * 1024 * 1024,):
    dbx = dropbox.Dropbox(access_token, timeout=timeout)
    with open(file_path, "rb") as f:
        file_size = os.path.getsize(file_path)
        chunk_size = 150 * 1024 * 1024
        if file_size <= chunk_size:
            print(dbx.files_upload(f.read(), target_path))
        else:
            with tqdm(total=file_size, desc="Uploaded") as pbar:
                upload_session_start_result = dbx.files_upload_session_start(
                    f.read(chunk_size)
                )
                pbar.update(chunk_size)
                cursor = dropbox.files.UploadSessionCursor(
                    session_id=upload_session_start_result.session_id,
                    offset=f.tell(),
                )
                commit = dropbox.files.CommitInfo(path=target_path)
                while f.tell() < file_size:
                    if (file_size - f.tell()) <= chunk_size:
                        print(
                            dbx.files_upload_session_finish(
                                f.read(chunk_size), cursor, commit
                            )
                        )
                    else:
                        dbx.files_upload_session_append(
                            f.read(chunk_size),
                            cursor.session_id,
                            cursor.offset,
                        )
                        cursor.offset = f.tell()
                    pbar.update(chunk_size)

dropboxupload(access_token, fullfilepath, "/"+filenamewithextension)

Он отлично работает.

Ответ, который автоматически возвращается, - это FileMetadata; Пример выглядит следующим образом:

FileMetadata(name='500.mp4', id='id:a5yk0DAylOAAAAAAAAADbA', client_modified=datetime.datetime(2020, 2, 19, 13, 56, 31), server_modified=datetime.datetime(2020, 2, 19, 13, 56, 31), rev='59eee27d89b134c0970a9', size=512727070, path_lower='/500.mp4', path_display='/500.mp4', parent_shared_folder_id=None, media_info=None, symlink_info=None, sharing_info=None, is_downloadable=True, export_info=None, property_groups=None, has_explicit_shared_members=None, content_hash='e134be9c61057696145fbe4c416d5e62c983649bb756c9e9597d982781a1cb83')

Что я хочу сделать, это захватить этот ответ и использовать данные в нем для других целей на следующем шаге моего проекта.

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

data = str(dropbox.files.FileMetadata.id)
print ("THE DATA VARIABLE IS")
print(data)

, но все, что распечатывается, это ....

THE DATA VARIABLE IS
property object at 0x03A82F60

Я явно неправильно записываю данные - пожалуйста, вы можете помочь?!

Спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Я думаю, что вы хотите сделать это:

data = dropbox.files.FileMetadata.id()
...