[python] 对 pathlib.Path 实例进行排序.md
# from pathlib.py; 省略了不相关部分
class _WindowsFlavour(_Flavour):
def casefold(self, s):
return s.lower()
def casefold_parts(self, parts):
return [p.lower() for p in parts]
class _PosixFlavour(_Flavour):
def casefold(self, s):
return s
def casefold_parts(self, parts):
return parts
class PurePath(object):
@property
def _cparts(self):
# Cached casefolded parts, for hashing and comparison
try:
return self._cached_cparts
except AttributeError:
self._cached_cparts = self._flavour.casefold_parts(self._parts)
return self._cached_cparts
def __lt__(self, other):
if not isinstance(other, PurePath) or self._flavour is not other._flavour:
return NotImplemented
return self._cparts < other._cparts
@property
def parts(self):
"""An object providing sequence-like access to the
components in the filesystem path."""
# We cache the tuple to avoid building a new one each time .parts
# is accessed. XXX is this necessary?
try:
return self._pparts
except AttributeError:
self._pparts = tuple(self._parts)
return self._pparts
对Path
序列进行排序时,Path
会将路径按分隔符切分成序列,然后逐元素进行对比,具体来说是在字符首次不相等的时候返回比较结果。
但两个平台下对路径理解不同,windows不考虑路径中字母大小写,因而在排序时会得到与linux下不同的结果。
——> Path.as_posix()
再进行排序
本文作者:心有所向,日复一日,必有精进
本文链接:https://www.cnblogs.com/Stareven233/p/18629974
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-12-25 [论文阅读] SE-GAN Skeleton Enhanced GAN-based Model for Brush Handwriting Font Generation