Python 3.11与3.9中os.path.join()行为差异及变更原因咨询
Python 3.11中os.path.join()的行为变更说明
对应更新记录
该变更属于Python 3.11对os.path模块路径拼接逻辑的修正,针对Windows平台下根路径(单独反斜杠)与子路径拼接的场景做了行为统一,相关调整记录在CPython 3.11的版本更新日志中,归类为路径处理模块的一致性修复。
变更原因
在Python 3.9及更早版本中,os.path.join(r"\", "foo")的处理存在逻辑偏差:当第一个参数是代表根目录的单独反斜杠时,拼接后会额外生成一个反斜杠(表现为\\foo),这不符合Windows文件系统中根目录拼接子路径的标准行为(规范路径应为\foo)。
Python 3.11调整了这一逻辑,确保根路径与子路径拼接时严格遵循Windows路径规范,因此在字符串的repr输出中会呈现为多一个转义反斜杠的形式(即你看到的\\\\\foo,对应实际路径\foo)。如果直接打印结果,3.11会输出\foo,而3.9会输出\\foo,后者是不符合规范的冗余反斜杠。
内容的提问来源于stack exchange,提问作者user18426413
相关产品推荐
相关产品推荐

