14

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

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

4

3 回答 3

22

不,你没有错过任何东西。按照设计,pathlib去除尾部斜杠,并且无法显示带有尾部斜杠的路径。正如错误跟踪器中提到的那样,这让几个人感到恼火:pathlib 去除尾随斜杠

在 Python 3.6 中添加斜杠的一种紧凑方法是使用 f 字符串,例如,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])
于 2017-11-30T11:44:41.413 回答
3

要添加路径风格的斜杠,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/'

但它似乎还没有任何记录在案的访问器。

于 2017-11-30T11:32:41.243 回答
1

您还可以使用:

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

我会说这取决于偏好而不是“更好”

于 2017-11-30T11:21:02.277 回答