程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Dropbox API v2使用python上传大型文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Dropbox API v2使用python上传大型文件?

开发过程中遇到Dropbox API v2使用python上传大型文件的问题如何解决?下面主要结合日常开发的经验,给出你关于Dropbox API v2使用python上传大型文件的解决方法建议,希望对你解决Dropbox API v2使用python上传大型文件有所启发或帮助;

对于此类大文件,您需要使用上传会话。否则,您将遇到诸如发布的错误之类的问题。

这使用Dropbox Python SDK将文件从指定的本地文件上载到DropBox API,并指定file_path到的远程路径dest_path。它还根据文件的大小选择是否使用上载会话:

import os

from tqdm import tqdm

import dropBox


def upload(
    access_token,
    file_path,
    target_path,
    timeout=900,
    chunk_size=4 * 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 = 4 * 1024 * 1024
        if file_size <= chunk_size:
            print(dbx.files_upload(f.read(), target_path))
        else:
            with tqdm(@R_580_10586@l=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)

解决方法

我正在尝试通过Dropbox API v2上传大文件(〜900MB),但出现此错误:

较小的文件也可以。

我在文档中发现需要使用files_upload_session_start@H_34_6@method打开上载会话,但是此命令有错误,我无法继续使用._append@H_34_6@method。

我怎么解决这个问题?文档中没有任何信息。我正在使用Python 3.5.1,并使用pip安装了最新的保管箱模块。

这是我要运行的代码:

c = Dropbox(access_token)
f = open("D:\\Programs\\ubuntu-13.10-desktop-amd64.iso","rb")
result = c.files_upload_session_start(f)
f.seek(0,os.SEEK_END)
size = f.tell()
c.files_upload_session_finish(f,fileS.UploadSessioncursor(result.session_id,sizE),files.CommiTinfo("/test900.iso"))

大佬总结

以上是大佬教程为你收集整理的Dropbox API v2使用python上传大型文件全部内容,希望文章能够帮你解决Dropbox API v2使用python上传大型文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。