【发布时间】:2020-05-17 18:12:13
【问题描述】:
如何将我的脚本文件名作为cwd 的相对路径并且它独立于操作系统?
例如,如果我在 linux 中,它应该返回“./script.py”,如果我在 Windows 中,它应该返回“.\\script.py”
我尝试使用 os.path.join 和 os.path.basename(__file__) 但它返回绝对路径。
【问题讨论】:
-
有趣的事实:Windows 暂时可以使用正斜杠。
-
@KlausD。当然,Windows 可以使用正斜杠。但是当我执行
os.walk时,它会返回带有反斜杠的文件名......因此,如果我想将两个文件路径作为字符串进行比较,我也必须创建带有反斜杠的字符串。 -
@KlausD.,有趣的事实:许多 Windows API 函数根本不支持斜杠作为路径分隔符,例如 Windows 8 中添加的 pathcch 函数。例如,
PathCchCombineEx加入"C:/spam"和"/eggs"错误地为"C:/spam\\/eggs",因为它不将“/”作为路径分隔符处理。但是,对于"C:\\spam"和"\\eggs",它会正确返回"C:\\eggs"。还有很多其他这样的例子。只有基本文件 API 可靠地支持斜杠作为路径分隔符 - 并且仅在 规范化 路径中,而不是在非规范化“\\?\”前缀路径中。
标签: python linux windows path operating-system