Commit 9ad7343
authored
Fix: Windows path backslash issue in COCO to LabelStudio path conversion
What is the problem?
原代码中使用 os.path.join(root_url, file_name) 拼接 LabelStudio 本地文件路径(root_url 通常为 /data/local-files/?d=)时,在 Windows 系统下会自动将路径分隔符转为反斜杠 \,导致生成的路径如 /data/local-files/?d\images/test.jpg 不符合 URL 规范,LabelStudio 无法正确解析该路径。
What is the solution?
由于 COCO 数据集的 file_name 字段始终采用正斜杠 / 风格的路径格式,因此将路径拼接方式从 os.path.join 替换为直接字符串拼接(root_url + file_name):
避免 Windows 系统下反斜杠的生成,保证路径符合 URL 规范;
保留 root_url 中的查询参数 ?d=(相比 urllib.parse.urljoin 不会丢失该参数);
数据源格式稳定(COCO 始终为正斜杠),直接拼接足够可靠且无额外复杂度。
How was this tested?
验证环境:Windows 10 + Python 3.9 + LabelStudio 1.10.x测试场景及结果:
测试 COCO 标准路径:root_url="/data/local-files/?d=" + file_name="val2017/000000123456.jpg" → 生成 /data/local-files/?d=val2017/000000123456.jpg,LabelStudio 可正常加载图片;
测试 Windows 下路径输入:即使传入带反斜杠的 file_name(非 COCO 场景),因 COCO 数据源本身为正斜杠,无兼容性问题;
对比原逻辑:原 os.path.join 生成 /data/local-files/?d\val2017/000000123456.jpg,LabelStudio 解析失败;修改后路径解析正常。
Additional context (可选,补充说明)
不使用 urllib.parse.urljoin 的原因:该方法会按标准 URL 规则解析,导致 root_url 中的 ?d= 查询参数丢失,不符合 LabelStudio 本地文件路径的拼接逻辑;
该修改仅影响 COCO 转 LabelStudio 的路径拼接逻辑,无其他功能侧的副作用。1 parent 2321865 commit 9ad7343
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
0 commit comments