Python中glob获取混合路径后拆分无扩展名文件名出错求助
解决路径分隔符混合与文件名拆分问题
问题根源是手动处理路径时未考虑跨平台分隔符差异,加上glob返回的路径可能混合/和\,导致后续路径拼接错误。以下是两种基于Python标准库的解决方案:
方法1:使用os.path模块(兼容所有Python版本)
借助os.path的工具函数标准化路径、拆分目录与文件名,确保路径格式统一:
import glob import os json_paths = glob.glob('testproject/JSON/*.json', recursive=True) for json_path in json_paths: # 标准化路径,自动统一系统分隔符(Windows用\,类Unix用/) normalized_path = os.path.normpath(json_path) # 拆分目录路径和带扩展名的文件名 dir_path, file_with_ext = os.path.split(normalized_path) # 剥离.json扩展名,得到基础文件名 file_base, _ = os.path.splitext(file_with_ext) # 拼接生成对应的.uml文件路径 uml_path = os.path.join(dir_path, f"{file_base}.uml") # 后续可在此处处理uml文件(如创建、写入内容) print(uml_path)
方法2:使用pathlib模块(Python 3.4+推荐)
pathlib是面向对象的路径处理工具,语法更简洁,自动处理跨平台分隔符:
from pathlib import Path import glob json_paths = glob.glob('testproject/JSON/*.json', recursive=True) for json_path in json_paths: # 将字符串路径转为Path对象,自动标准化分隔符 json_file = Path(json_path) # 直接替换扩展名生成.uml路径 uml_file = json_file.with_suffix('.uml') # 如需字符串格式路径,使用str(uml_file) print(uml_file)
错误原因说明
手动用split('/')或split('\\')拆分混合分隔符的路径时,会得到错误的分段结果(比如把testproject/JSON\abc.json拆成['testproject', 'JSON\\abc.json']),后续拼接出的JSON\\abc.uml是格式错误的相对路径,最终触发FileNotFoundError。使用标准库的路径工具会自动处理这些细节,避免手动拆分的失误。
内容的提问来源于stack exchange,提问作者Zykxpython
相关产品推荐
相关产品推荐

