Python脚本os.mkdir路径拼接异常:前缀多斜杠问题排查求助
问题排查:路径拼接出现多余斜杠导致FileNotFoundError
核心问题大概率出在受试者ID的读取逻辑
你的代码s.strip()只会移除字符串首尾的空白字符(空格、换行、制表符这类),如果你的受试者ID列表文件里,每行的ID本身开头/结尾带了斜杠(比如写的是/subject_01而不是subject_01),strip()根本不会处理这个斜杠。用os.path.join拼接时,前面的路径SC_QC和带斜杠的ID拼在一起,就会出现SC_QC\/subject_01这种畸形路径,自然触发FileNotFoundError。
快速修复代码
把读取ID的代码改成同时移除首尾的斜杠(正/反斜杠都处理):
subjects = [s.strip().strip('/\\') for s in open(txtfile, 'r').readlines()]
这样不管ID前后不小心带了哪种斜杠,都会被清理掉,再用os.path.join拼接出来的路径就是正常格式。
隐藏字符的排查方案(次要可能)
如果确实是文件里有隐藏控制字符,dos2unix没用的话,先在终端用cat -A your_subjects_list.txt查看文件内容,能把所有隐藏字符(比如^M、奇怪的控制符)显示出来。
要是确认有多余字符,可以用sed批量清理,比如只保留字母、数字和下划线(根据你的ID格式调整正则):
sed 's/[^a-zA-Z0-9_]//g' your_subjects_list.txt > cleaned_subjects.txt
调试小技巧
在调用os.mkdir之前加一行打印,先确认拼接后的路径是否正常:
output_path = os.path.join(base_dir, subject_id) print(f"准备创建文件夹:{output_path}") os.mkdir(output_path)
这样能直观看到每个路径的实际形态,快速定位问题。
内容的提问来源于stack exchange,提问作者florence-y
相关产品推荐
相关产品推荐

