如何从 Google Colab 下载多个文件或整个文件夹?

Posted

技术标签:

【中文标题】如何从 Google Colab 下载多个文件或整个文件夹?【英文标题】:How do I download multiple files or an entire folder from Google Colab? 【发布时间】:2018-10-31 09:08:11 【问题描述】:

目前,我可以使用命令将文件作为单个文件下载

files.download(file_name)

我还尝试使用以下代码 sn-p 将它们上传到驱动器,但它正在将它们作为单独的文件上传。

uploaded = drive.CreateFile('title': file_name)
uploaded.SetContentString('Sample upload file content')
uploaded.Upload()
print('Uploaded file with ID '.format(uploaded.get('id')))

如何将多个文件作为文件夹下载到本地计算机?或者如何将这些文件作为文件夹上传到我的谷歌驱动器?

【问题讨论】:

【参考方案1】:

我创建了一个 zip 文件:

!zip -r /content/file.zip /content/Folder_To_Zip

比我下载的那个 zip 文件:

from google.colab import files
files.download("/content/file.zip")

【讨论】:

我将此答案标记为解决方案。它完全适合我。谢谢 另外值得注意的是,如果您在files.download()上下载大文件时遇到问题,您也可以点击左上角的人字形图标,浏览@987654324下的所有文件@标签并手动下载文件。 如果你问:“file.zip 在哪里?”您可以在 Colab Notebook 左侧窗格的底部找到它。然后你可以通过右键单击它来下载它。 我的文件名在 python 中。 . .你如何将我的 python 代码翻译成那种格式 对我来说,由于某种原因它停留在files.download(.zip size ~2mb),但我可以通过Files手动下载它。【参考方案2】:

例如,如果你必须下载日志文件夹:

!zip -r log.zip log/

-r代表递归

log.zip 是目标 zip 文件并且 log/ 是源文件夹路径

【讨论】:

这个答案比接受的答案更清楚。【参考方案3】:

我发现:

!zip -r ./myresultingzippedfolderwithallthefiles.zip ./myoriginalfolderwithallthefiles/

在 colab 为我工作。

这里的. 可以是您的主目录,也可以是您原来的myoriginalfolderwithallthefiles 所在的目录以及将创建myresultingzippedfolderwithallthefiles.zip 的目录。根据需要更改目录。

【讨论】:

【参考方案4】:

您可以使用代码压缩文件夹并使用files 下载它们。

#@title Utility to zip and download a directory
#@markdown Use this method to zip and download a directory. For ex. a TB logs 
#@markdown directory or a checkpoint(s) directory.

from google.colab import files
import os

dir_to_zip = 'dir_name' #@param type: "string"
output_filename = 'file.zip' #@param type: "string"
delete_dir_after_download = "No"  #@param ['Yes', 'No']

os.system( "zip -r  ".format( output_filename , dir_to_zip ) )

if delete_dir_after_download == "Yes":
    os.system( "rm -r ".format( dir_to_zip ) )

files.download( output_filename )

【讨论】:

如果您没有文件夹,并且所有文件都在 Colab 的主目录中,则可以使用dir_to_zip = '/content' #@param type: "string" 获取上述代码。这是 Colab 的主目录。 另一个问题:如何选择几个文件进行压缩?我所有的文件都在主目录上,我只需要压缩其中的 4 个。我怎样才能专门压缩那些?【参考方案5】:

将此代码复制到一个单元格中,并更改两个字段文件名和文件夹_or_files_to_save。 它会将所有文件夹或文件压缩成一个 zip 文件并将其保存在您的 Google 驱动器中

#@title save yo data to drive
filename = "kerasmodel" #@param type:"string"
folders_or_files_to_save = "keras_model.h5" #@param type:"string"
from google.colab import files
from google.colab import auth
from googleapiclient.http import MediaFileUpload
from googleapiclient.discovery import build

def save_file_to_drive(name, path):
    file_metadata = 
    'name': name,
    'mimeType': 'application/octet-stream'
    

    media = MediaFileUpload(path, 
                  mimetype='application/octet-stream',
                  resumable=True)

    created = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()

    print('File ID: '.format(created.get('id')))

    return created


extension_zip = ".zip"

zip_file = filename + extension_zip

# !rm -rf $zip_file
!zip -r $zip_file folders_or_files_to_save # FOLDERS TO SAVE INTO ZIP FILE

auth.authenticate_user()
drive_service = build('drive', 'v3')

destination_name = zip_file
path_to_file = zip_file
save_file_to_drive(destination_name, path_to_file)

【讨论】:

【参考方案6】:

使用tar 将目录中的文件组合成一个文件。

例如,这里有一个 sn-p,它创建一个目录、其中的 3 个文件和一个包含该组的 .tar 存档:

!mkdir demo
!echo a > demo/a
!echo b > demo/b
!echo c > demo/c
!tar -cvf demo.tar demo/

在这种情况下,要下载的文件是 demo.tar。有关更多提示,请搜索创建和扩展 tar 存档。

【讨论】:

【参考方案7】:

就我而言,我必须下载一个包含我的笔记本构建的每个模型的 h5 文件(用于提交大学项目)的整个文件夹。我发现下载此文件夹以及文件夹中所有文件的最简单方法是将文件夹拖放到同一文件夹树中的“我的云端硬盘”文件夹中。

显然我后来从 Google Drive 下载了该文件夹。

【讨论】:

以上是关于如何从 Google Colab 下载多个文件或整个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何一次将多个 csv 文件读取到 Google Colab

如何从 Google Colab Notebook 中杀死 Ngrok 隧道

从Google Colab中的驱动器读取文件

如何在 Google Colab 中引用共享文件和文件夹?

如何从 google colab 的压缩文件夹中读取/导入训练和测试图像以进行多分类? gdrive 已安装到 gcolab

如何使用 Google Colab 中的脚本文件中的 pyplot 进行绘图?