python 路径处理与 linux 和 windows 之间尾随点('.')的差异

differences in python path handling with trailing dot ('.') between linux and windows

我在修复 python 脚本中的 cross-platform 错误时遇到了一个令人惊讶的结果。 (旁注: poetry 指定的相同 venv,otoh 这是基本的 python 库功能)

想要将一些 path-trunk 减少 header 部分,我使用了:
os.path.relpath('../data/what/ever/path/trunk.', '../data/')
对于 linux 产生:
'what/ever/path/trunk.'
windows 产生:
'what/ever/path/trunk'(标记末尾缺少的点

这是为什么,如何证明这种异常行为是合理的?

在 Windows 上,文件名中的最后一个 . 用于将文件扩展名与文件名的其余部分分开。如果扩展名是空的,那么.是可选的;两种形式都引用同一个文件。

Linux 没有文件扩展名,因此结尾的 . 是文件名的有效部分,必须保留。