将文件直接从Dropbox下载到Google云端硬盘(使用协作)


将文件直接从Dropbox下载到Google云端硬盘

简介

在云之间交换数据时,如果是通过本地的话,会有些麻烦。

(示例)Dropbox→本地→Google云端硬盘

这次,我将向您展示如何使用Colaboratory将文件直接从Dropbox下载到Google云端硬盘。

处理流程

这次,我将以压缩文件(.tar.gz)为例介绍下载方法。

处理流程为

  • 在Colab中挂载Google驱动器并将其设为工作文件夹
  • 准备使用urllib从URL下载文件
  • 写入云端硬盘上的文件
  • 变为


    让我们看一下实际的代码。

    1.在Colab中挂载Google驱动器,使其成为工作文件夹

    1
    2
    3
    from google.colab import drive
    drive.mount('/content/drive')
    %cd "drive/My Drive"

    当将Drive与Colab一起使用时,这是一种熟悉的方法。

    2.准备使用urllib

    从URL下载文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import urllib.request
    import os

    # 対象のURL (末尾を "?dl=1" にする必要があります)
    DROPBOX_URL = "https://www.dropbox.com/s/2qasmb81c1y3lud/ruby-2.6.3.tar.gz?dl=1"

    # 保存ファイルの名前 (ここではダウンロード元と同じにしている)
    filename=DROPBOX_URL[:-5].split('/')[5]

    # 保存場所 = ドライブのtmpフォルダ以下
    directory="tmp/"

    该点位于

    URL的末尾。通常,它是?Dl = 0,所以将其更改为?Dl = 1。
    同样,这次,仅以共享链接创建的URL为目标。单独使用Dropbox API从私有文件夹下载。
    相关链接:使用Dropbox Python库

    下载文件

    3.写入驱动器

    上的文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 大きなデータは256kb毎に細切りにして読み込む
    chunk_size = 1024 * 256

    with urllib.request.urlopen(DROPBOX_URL) as resp:
      if not os.path.exists(directory):
        os.makedirs(directory)
      with open(os.path.join(directory, filename), 'wb') as f:
         while 1:
            chunk = resp.read(chunk_size)
            if not chunk:
                break
            else :
              f.write(chunk)
              f.flush()
              os.fsync(f.fileno())

    通过分离并读取数据,可以处理大数据。

    结果

    1
    ls tmp/  # --> ruby-2.6.3.tar.gz

    我能够正确保存它。

    末尾

    这次,我介绍了无需通过本地将Dropbox文件拖放到Google云端硬盘的过程。
    如果有足够的容量,那么如果您在本地进行操作则很简单明了,但是也有这种方法。

    附录
    可以使用wget下载保管箱,因此

    而不是urllib

    1
    !wget -O tmp/FILENAME "対象URL(末尾?dl=1)"

    使用

    更容易。