如何在Google Colab中使用Google Drive下载文件?

4

我一直在使用这段代码将Colab与Google Drive连接并通过粘贴下载链接下载任何文件,但是我注意到即使文件只有几兆字节大小,它也需要相当长的时间。有什么可以做来改善它吗?

**First cell:**
from google.colab import drive
drive.mount('/content/gdrive')
root_path = 'gdrive/My Drive/' 

**Second cell:**
import requests  
file_url = "DOWNLOAD URL HERE"

r = requests.get(file_url, stream = True)  

with open("/content/gdrive/My Drive/FILE NAME HERE", "wb") as file:  
    for block in r.iter_content(chunk_size = 1024): 
         if block:  
             file.write(block)
2个回答

11

我更喜欢使用!wget命令。

!wget "指定要下载的网址" -P "指定您想要将网址内容保存到的目录"

例如:

!wget "https://github.com/jbrownlee/Datasets/releases/download/Flickr8k/Flickr8k_Dataset.zip" -P "/content/drive/My Drive/imgcaptiongen/data"

这样做更容易。


有没有办法使用Python字符串而不是直接编写URL? - Daniel Garavito
@DanielGaravito 是的,将你的Python表达式用花括号括起来,例如: !wget {some_url} -P {path + subfolder} - Santiago Ruiz-Valdepeñas

0

不要将文件下载到Google Drive中,因为在Colab中访问Google Drive会有额外的开销,特别是在那里写文件。

如果这个文件是临时的,只需将其下载到/tmp(或使用{{link1:tempfile.gettempdir}}使代码更漂亮)。 如果它不是临时的,请仍然考虑将其下载到临时文件夹,然后在下载结束时将其复制到Drive中(同时继续使用本地副本以提高速度)。


你能帮我集成它吗?我已经尝试过了,但没有得到实质性的结果。 - M.Gharabeel
@M.Gharabeel - 使用https://dev59.com/LmQn5IYBdhLWcg3wn4RS#39217788使用请求下载文件,但修改创建的文件名/路径为`tempfile.mkstemp()`(请参见https://docs.python.org/3/library/tempfile.html#tempfile.mkstemp)。最后,使用`shutil.move`将文件移动到Drive(https://docs.python.org/3/library/shutil.html#shutil.move),指定`copy_function=shutil.copy`(请参阅文档以了解原因) - Barak Itkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接