我试着改变我的问题,使其更少地基于观点。
当文件系统路径不存在时,将pathlib.Path对象强制/求值为False有什么缺点?
例如,pathlib.Path可以使用任何__bool__逻辑编写,因为它只是一个Python类
class Path(object):
def __init__(self, path):
self.path_ = path
def __bool__(self):
return self.checkIfExistsOnFileSystemOrNot_()
def path(self):
return self.path_
def checkIfExistsOnFileSystemOrNot_(self):
# any logic here ...
...我知道您可能想要构建一个在python程序中不存在的文件路径,但是您想在什么时候这样做呢?
if path:
# do something with the path "assuming" it exits on the filesystem (and not just that it's not falsy)我同意这一点
if path.exists():
# ...这不是更多的努力,但考虑到我一直在语言之间跳跃,这给我带来了一些痛苦。
发布于 2020-02-18 06:27:21
现在问题已经改变了,我在原始答案中提出的最后一点可能是最重要的:清晰度。
Explicit比implicit更好。
和
的可读性很重要。
在Path对象上显式调用.exists()非常清楚。一个不熟悉Python的新程序员可以阅读
if some_path.exists():
# ...或许能理解它。但
if some_path:
# ...就不那么清楚了。
我一直在不同的语言之间跳跃,这给我带来了一些痛苦。
惯用的Python和惯用的Ruby、C#或Scala都是不同的。那好吧。
现在,回到老答案的其余部分:
pathlib不仅仅用于表示特定可见文件系统上的文件和文件夹。它用于表示和操作路径本身(粗体添加):
此模块提供了表示文件系统路径的类,这些类具有适合不同操作系统的语义。路径类分为和concrete paths,前者提供没有I/O的纯计算操作,后者继承自纯路径,但也提供I/O操作。
您甚至可以在Linux系统上操作Windows样式的路径,反之亦然。
将路径的真实性减少到“这个文件存在吗?”看起来像是一个奇怪的设计决定。特别是当关于文件和目录还有其他布尔问题时:它是可读的吗?可写?可执行文件?符号链接?一个目录?常规文件?先进先出?
https://stackoverflow.com/questions/60271121
复制相似问题