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

时间:2017-11-30 11:17:12

标签: python pathlib

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

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

3 个答案:

答案 0 :(得分:5)

不,你没有错过任何东西。按照设计,pathlib会删除尾部斜杠,并且无法显示带有斜杠的路径。如bug追踪器pathlib strips trailing slash所述,这让几个人感到恼火。

在Python 3.6中添加斜杠的一种简单方法是使用f-string,例如f'{some_path}/'f'{some_path}{os.sep}',如果你想与操作系统无关。

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])

答案 1 :(得分:1)

你也可以使用:

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

我会说这取决于偏好而不是&#34;更好&#34;

答案 2 :(得分:1)

要仅使用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/'

但它似乎还没有任何记录的访问者。