将 WindowsPath 转换为 PosixPath

Convert WindowsPath to PosixPath

我正在使用 pathlib 使用 Path class.

来管理我在 Python 项目中的路径

当我使用 Linux 时,一切正常。但是在 Windows 上,我遇到了一个小问题。

在我的代码中的某个时刻,我必须编写一个 JavaScript 文件,其中列出了对其他几个文件的引用。这些路径必须以 POSIX 格式编写。但是当我在Windows上做str(my_path_instance)时,路径写成Windows格式。

你知道用 pathlibWindowsPath 转换为 PosixPath 的简单方法吗?

pathlib 有一个 as_posix method 可以从 Windows 转换为 POSIX 路径:

pathlib.path(r'foo\bar').as_posix()

除此之外,您通常可以通过调用适当的构造函数来构造系统特定的路径。 The documentation states那个

You cannot instantiate a WindowsPath when running on Unix, but you can instantiate PureWindowsPath. [or vice versa]

所以使用Pure*class构造函数:

str(pathlib.PurePosixPath(your_posix_path))

但是,如果 your_posix_path 包含反斜杠,这将不会执行您想要的操作,因为 \(= Windows 路径分隔符)就 [= 而言只是一个常规字符46 =]有关。所以 a\b 是有效的 POSIX 文件名, 不是 表示目录 b 内文件 b 的路径,PurePosixPath 将保留此解释:

>>> str(pathlib.PurePosixPath(r'a\b'))
'a\b'

要将 Windows 转换为 POSIX 路径,请使用 PureWindowsPath class 并通过 as_posix:

进行转换
>>> pathlib.PureWindowsPath(r'a\b').as_posix()
'a/b'

Python pathlib 如果你想在 Unix 机器上操作 Windows 路径(反之亦然)——你不能实例化一个 Windows在Unix上运行时的路径,但你可以实例化PureWindowsPath/PurePosixPath

.