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

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

files.download(file_name)

我也尝试用下面的代码片段将它们上传到驱动器,但是它正在将它们作为单独的文件上传。

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

How can I download multiple files as a folder to my local computer? Or how can I upload these files as a folder to my google drive?

146177 次浏览

将此代码复制到一个单元格中,并更改两个字段 filename 和 files _ or _ files _ to _ save。 它将所有的文件夹或文件压缩到一个 zip 文件,并保存在您的谷歌驱动器

#@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)

使用 tar将目录中的文件分组为单个文件。

例如,下面的代码片段创建了一个目录,其中包含3个文件,以及一个包含该组的 .tar归档文件:

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

在本例中,要下载的文件是 demo.tar。要了解更多提示,请搜索创建和扩展 tar 归档文件。

我创建了一个 zip 文件:

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

比我下载的压缩文件还多:

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

I found that:

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

在 Colab 为我工作。

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

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

!zip -r log.zip log/

-r表示递归

log.zip是目标压缩文件和 log/是源文件夹路径

enter image description here

您可以使用代码压缩文件夹并使用 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 )

In my case, I had to download an entire folder containing h5 files(for submitting a college project) of each model my notebook built. Easiest way I found to download this folder and hence all files in the folder is to drag and drop the folder into the "My Drive" folder in the same folder tree.

Drive folder and folder to be uploaded highlighted

显然,我后来从 Google Drive 下载了这个文件夹。

!zip -r /content/sample_data.zip /content/sample_data
# change sample_data.zip to your desired download name Ex: nothing.zip
# change sample_data to your desired download folder name Ex: ner_data

enter image description here

使用要下载的文件夹的复制路径。然后:

from google.colab import files
files.download("path")
  1. 如果 Drive 和 Colab 笔记本都是你的私人物品:

    • A)登上车道,
    • B)遍历文件夹的路径,点击文件名前面的“ ...”,然后使用文件/文件夹的路径
  2. 如果你想下载一个特殊的文件夹 没有安装驱动器:

    • A)创建文件夹的 压缩文件(对于单个文件不需要压缩)

    • B) !gdown --id zip_file_id 'like this id 1ZxqBjXlF0H6.....'

    • C)用于 file _ id

      1——-使用获取链接或共享压缩文件——- enter image description here 2————-ID 文件共享链接的一部分——-

enter image description here