将尾部斜杠添加到 pathlib 目录的最佳方法是什么?

What's the best way to add a trailing slash to a pathlib directory?

我有一个目录,我想用尾部斜杠打印出来:my_path = pathlib.Path('abc/def')

有没有比 os.path.join(str(my_path), '') 更好的方法?

您还可以使用:

os.path.normpath(str(my_path)) + os.sep

我会说这取决于偏好而不是 "nicer"

要仅使用 pathlib 添加路径风格的尾部斜杠,您可以这样做:

>>> from pathlib import Path
>>> my_path = Path("abc/def")
>>> str(my_path / "_")[:-1]  # add a dummy "_" component, then strip it
'abc/def/'

查看 source,还有一个 Path._flavour.sep 属性:

>>> str(my_path) + my_path._flavour.sep
'abc/def/'

但它似乎还没有任何文档化的访问器。

不,你没有遗漏任何东西。按照设计,pathlib 会去除尾部斜杠,并且无法提供显示带有尾部斜杠的路径的方法。正如错误跟踪器中提到的那样,这让一些人感到恼火:pathlib strips trailing slash

在 Python 3.6 中添加斜杠的一种紧凑方法是使用 f 字符串,例如 f'{some_path}/'f'{some_path}{os.sep}' 如果您想成为 OS 不可知论者.

from pathlib import Path
import os

some_path = '/etc'
p = Path(some_path)
print(f'{p}/')
print(f'{p}{os.sep}')

输出

/etc/
/etc/

另一种选择是添加一个虚拟组件并将其从结果字符串中切掉:

print(str(p/'@')[:-1])