6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dropboxからファイルを直接Googleドライブにダウンロードする (Colaboratory使用)

Last updated at Posted at 2019-04-22

#Dropboxからファイルを直接Googleドライブにダウンロードする

##はじめに
####クラウド間でデータをやり取りするときローカル経由だと少々面倒です。
(例) Dropbox → ローカル → Google Drive
####今回は、Colaboratory を用いてDropbox から Google Drive に直接ファイルをダウンロードする方法を紹介します。

##処理のフロー
今回は、圧縮ファイル(.tar.gz) を例にダウンロードの方法を紹介します。

処理の流れは

  1. ColabでGoogle driveをマウントし、作業フォルダにする
  2. urllib を使ってURLからファイルをダウンロードする準備
  3. Drive上のファイルに書き込み

となります。
では、実際のコードを見てみます。

##コード
###1. ColabでGoogle driveをマウントし、作業フォルダにする

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

ColabでDriveを使う時におなじみのやり方です。

###2. urllib を使ってURLからファイルをダウンロードする準備

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を使います。
関連リンク : Downloading a file using the Dropbox Python library

###3. Drive上のファイルに書き込み

# 大きなデータは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())  

データを区切って読み込むことで、大きなデータにも対応できます。
###結果


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

ちゃんと保存できました。
##終わりに
今回はDropboxのファイルをローカルを経由せずにGoogle Drive に落とす工程を紹介しました。
容量に余裕があるならばローカル経由でやる方が素直で分かりやすいですが、こんな方法もあるということで。

追記
dropboxはwgetでダウンロードできるので、urllibではなく、

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

とした方が簡単です。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?