如何在Google Colab中上传包含子文件夹的图片数据集?
嘿,刚好碰到过这个问题!files.upload()确实只能处理单个文件,要上传带多层子文件夹的图片数据集,有几个靠谱的方案,你按需选就行:
方法1:挂载Google Drive(最推荐,适合大/常用数据集)
如果你的数据集比较大,或者之后还要反复用到,直接挂载Google Drive是最省心的:
- 先运行这段代码授权挂载:
from google.colab import drive drive.mount('/content/drive')
- 执行后会弹出一个授权链接,点击它登录你的Google账号,复制生成的授权码,粘贴到Colab的输入框里回车,就能完成挂载。
- 挂载成功后,你可以在Colab左侧的文件浏览器里看到
/content/drive/MyDrive路径。提前把你的数据集文件夹上传到Google Drive里,之后就可以直接通过这个路径读取数据了,比如遍历子文件夹里的图片:
import os # 替换成你在Drive里的数据集文件夹路径 data_root = '/content/drive/MyDrive/MyImageDataset' # 遍历所有子文件夹和图片文件 for root, dirs, files in os.walk(data_root): for filename in files: if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp')): img_full_path = os.path.join(root, filename) # 在这里添加你的图片处理逻辑 print(f"找到图片:{img_full_path}")
方法2:上传ZIP压缩包后解压(适合小型临时数据集)
如果你的数据集不大,只是临时用一次,可以先把本地的文件夹打包成ZIP文件,再上传解压:
- 第一步,上传ZIP包:
from google.colab import files uploaded = files.upload()
- 上传完成后,找到你上传的ZIP文件名(比如
my_dataset.zip),运行以下代码解压到指定目录:
import zipfile import io # 替换成你的ZIP文件名 zip_filename = 'my_dataset.zip' # 解压到/content/dataset目录下 extract_path = '/content/dataset' with zipfile.ZipFile(io.BytesIO(uploaded[zip_filename]), 'r') as zip_ref: zip_ref.extractall(extract_path) print(f"数据集已解压到:{extract_path}")
- 解压完成后,
/content/dataset里就会保留原有的子文件夹结构和所有图片了。
方法3:通过命令行拉取(适合网络上的公开数据集)
如果你的数据集托管在GitHub、GitLab或者其他公开存储平台,直接用Colab的命令行工具下载更高效:
比如克隆GitHub仓库:
!git clone https://github.com/your-username/your-dataset-repo.git
或者用wget下载ZIP包并解压:
!wget https://example.com/your-dataset.zip !unzip your-dataset.zip -d /content/dataset
内容的提问来源于stack exchange,提问作者Karan Purohit
相关产品推荐
相关产品推荐

