Colab中路径正确仍无法访问Google Drive文件夹的问题求助
Google Colab中使用splitfolders分割Drive数据集报错:OSError: [Errno 107] Transport endpoint is not connected
问题场景
我在Colab中构建图像识别模型,通过挂载Google Drive导入数据集(方便他人共享时无需下载或修改路径),运行splitfolders.ratio分割数据集时触发以下错误:
OSError: [Errno 107] Transport endpoint is not connected: '/content/drive/MyDrive/dataset'
当前使用的代码:
!pip install tensorflow keras split-folders opencv-python import splitfolders from google.colab import drive drive.mount('/gdrive') %cd /gdrive input_folder = "/content/drive/MyDrive/dataset" output_folder = "/content/drive/MyDrive/image-recognition" split_ratio = (0.8, 0.1, 0.1) splitfolders.ratio( input_folder, output= output_folder, seed = 500, #para que cada ves que de dividan las imgs se haga de la misma forma ratio = split_ratio, group_prefix = None )
错误原因
代码中把Google Drive挂载到了/gdrive目录,但后续引用的数据集路径却是/content/drive/MyDrive/...——两个路径不匹配,导致系统无法找到正确的挂载端点,触发传输连接错误。
解决方案
方案1:统一挂载路径与数据集路径
保持挂载到/gdrive,修改数据集路径为挂载目录下的对应路径:
!pip install tensorflow keras split-folders opencv-python import splitfolders from google.colab import drive drive.mount('/gdrive') %cd /gdrive # 修改路径为/gdrive下的MyDrive目录 input_folder = "/gdrive/MyDrive/dataset" output_folder = "/gdrive/MyDrive/image-recognition" split_ratio = (0.8, 0.1, 0.1) splitfolders.ratio( input_folder, output= output_folder, seed = 500, # 保证每次分割结果一致 ratio = split_ratio, group_prefix = None )
方案2:使用Colab默认挂载路径
将Drive挂载到Colab默认的/content/drive目录,保持原有数据集路径不变:
!pip install tensorflow keras split-folders opencv-python import splitfolders from google.colab import drive # 挂载到默认路径/content/drive drive.mount('/content/drive') %cd /content/drive/MyDrive input_folder = "/content/drive/MyDrive/dataset" output_folder = "/content/drive/MyDrive/image-recognition" split_ratio = (0.8, 0.1, 0.1) splitfolders.ratio( input_folder, output= output_folder, seed = 500, # 保证每次分割结果一致 ratio = split_ratio, group_prefix = None )
额外排查步骤
- 挂载完成后,先通过
!ls /gdrive/MyDrive(方案1)或!ls /content/drive/MyDrive(方案2)确认dataset文件夹存在 - 如果挂载后出现连接断开,可添加
force_remount=True强制重新挂载:drive.mount('/gdrive', force_remount=True)或drive.mount('/content/drive', force_remount=True)
内容的提问来源于stack exchange,提问作者Luna




