如何从中央数据仓库加载数据到Google Colab供多用户共享使用
针对你提到的10-100MB netCDF文件、仅需只读访问、分享笔记本时接收方无需额外获取数据文件的需求,完全可以搭建统一的中央只读数据源,不需要每次分享笔记本都同步传数据,下面是按易用性排序的可落地方案:
方案1:Google Drive 公开只读托管(最推荐,零额外成本)
你不需要把数据文件单独发给每个接收者,只需要把存放netCDF文件的Google Drive文件夹权限设置为「知道链接的任何人 - 查看者」,之后在笔记本代码里直接通过文件ID拉取数据即可。接收方打开笔记本不需要挂载自己的云盘、不需要申请权限,运行代码就能自动加载数据,全程只有读取权限,任何人都无法修改你的源文件。
参考代码:import xarray as xr import gdown # 替换为你自己公开共享的netCDF文件ID file_id = "你的公开文件ID" temp_save_path = "temp_data.nc" gdown.download(f"https://drive.google.com/uc?id={file_id}", temp_save_path, quiet=False) # 直接读取加载到的临时文件 ds = xr.open_dataset(temp_save_path)这个方案的优势是你随时可以更新Drive里的源文件,所有用户打开笔记本都会自动读取最新版本的数据,不需要重新发笔记本或者数据文件。
方案2:公开代码仓库托管(适合固定版本数据)
如果你的netCDF数据是稳定不常更新的版本,可以直接把文件上传到公开代码仓库,注意单文件大小不超过100MB即可,刚好匹配你当前的文件大小区间。配置完成后直接在代码里拉取对应文件的原始地址读取即可,接收方不需要做任何额外操作。
参考代码:import xarray as xr import requests # 替换为仓库内文件的原始访问地址 file_url = "你的文件原始访问地址" with open("temp_data.nc", "wb") as f: f.write(requests.get(file_url).content) ds = xr.open_dataset("temp_data.nc")方案3:公共云存储桶(适合长期高频访问场景)
如果后续访问人数较多、数据量可能进一步提升,可以创建公共只读的云存储桶存放netCDF文件,配置匿名只读权限后,甚至不需要把文件下载到Colab临时存储,就能直接远程读取文件内容,加载效率更高。
参考代码:import xarray as xr import gcsfs # 匿名模式访问公共只读存储桶,不需要任何授权 fs = gcsfs.GCSFileSystem(token="anon") # 替换为存储桶内的文件路径 nc_path = "你的存储桶名/数据文件.nc" ds = xr.open_dataset(fs.open(nc_path))
选型提示:如果没有特殊需求优先选第一个方案,全程不需要额外注册服务、不需要付费,配置一次就能永久用,10-100MB的文件加载时间基本在3-10秒,完全不影响使用体验。所有方案都满足只读要求,不存在源文件被访问者篡改的风险。
内容的提问来源于stack exchange,提问作者Michael Erb

