将文件直接从Dropbox下载到Google云端硬盘
简介
在云之间交换数据时,如果是通过本地的话,会有些麻烦。
(示例)Dropbox→本地→Google云端硬盘
这次,我将向您展示如何使用Colaboratory将文件直接从Dropbox下载到Google云端硬盘。
处理流程
这次,我将以压缩文件(.tar.gz)为例介绍下载方法。
处理流程为
变为
。
让我们看一下实际的代码。
码
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)" |
使用
更容易。