我有一个目录,我想打印出一个斜杠:my_path = pathlib.Path('abc/def')
有没有比os.path.join(str(my_path), '')
更好的方法呢?
答案 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/'
但它似乎还没有任何记录的访问者。