如何将本地文件URL转换为os模块兼容的文件路径?
正确处理file URI转本地文件路径的方法
别用replace()这种临时方案,它只能处理空格对应的%20,遇到其他百分号编码的字符(比如中文、特殊符号)就会失效。Python标准库的urllib.parse模块提供了完整的URI解析和解码能力,这才是规范的处理方式:
代码示例
from urllib.parse import urlparse, unquote # 你的file URI file_uri = 'file:///home/pi/Desktop/music/Radio%20Song.mp3' # 解析URI,拆分出各个组成部分 parsed_uri = urlparse(file_uri) # 对路径部分进行百分号解码,得到本地文件路径 local_path = unquote(parsed_uri.path) print(local_path) # 输出: /home/pi/Desktop/music/Radio Song.mp3
为什么这是正确方式
urlparse()能准确识别file URI的结构,稳定提取出真实路径部分,不会因为URI格式变化(比如带查询参数、不同系统的URI格式)出错unquote()可以解码所有百分号编码的字符,比如%E4%B8%AD%E6%96%87会被解码为“中文”,覆盖所有可能的编码场景,比手动替换靠谱得多
针对Windows系统的补充
如果是Windows平台的file URI(比如file:///C:/Users/xxx/Test%20File.txt),解析后得到的路径开头会多一个斜杠(/C:/Users/xxx/...),可以用lstrip('/')去掉多余的斜杠:
local_path = unquote(parsed_uri.path).lstrip('/')
内容的提问来源于stack exchange,提问作者MillerTime
相关产品推荐
相关产品推荐

