【问题标题】:Splitting folders in a Google Bucket either from the Console or from a Notebook从控制台或笔记本拆分 Google 存储桶中的文件夹
【发布时间】:2021-02-25 03:24:13
【问题描述】:
假设我的存储桶中有 10 个文件夹。我想以 0.8,0.1,0.1 的比例拆分文件夹的内容,并将它们移动到三个新文件夹 Train、Test 和 Val。我之前已经通过下载文件夹、拆分并再次上传它们来完成此过程。我现在想在存储桶本身中拆分他的文件夹。
我能够使用来自 Notebook 的“google-cloud-storage”库使用帖子here 连接到存储桶。我能够下载,上传文件。我不确定如何在不下载内容的情况下实现拆分文件夹。
感谢您的帮助。
PS:我不需要完整的代码,只是如何处理就可以了
【问题讨论】:
标签:
python-3.x
google-cloud-platform
jupyter-notebook
【解决方案1】:
使用 Cloud Storage,您只能读取、写入(创建/删除)。您不能在存储桶内移动 blob,即使该操作存在于控制台或某些客户端库中,移动也是使用另一个路径对内容进行 WRITE/CREATE,然后对前一个路径进行 WRITE/DELETE。
因此,您的策略必须遵循相同的逻辑:
- 执行
gsutil ls 列出所有文件
- 在一个目录中复制(或移动)80%,在另外 2 个目录中复制(或移动)10% 和 10%
- 删除旧目录(如果使用移动操作则无用)。
这比下载和上传文件要快,但需要时间。因为它不是文件系统,而只是API调用,所以每个文件都需要时间。如果您有数千个文件,则可能需要数小时!