将尾部斜杠添加到 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])
我有一个目录,我想用尾部斜杠打印出来: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])