是否有原则上的原因,为什么在os.path.basename
的参数中使用结尾目录定界符会产生一个空字符串?除了不确定的实现边缘情况或实现副作用之外,我不确定是否可以对返回值有任何理解。
>>> import os
>>> os.path.basename('/tmp')
'tmp'
>>> os.path.basename('/tmp/')
''
答案 0 :(得分:3)
basename
的文档中指出:
返回路径名path的基本名称。这是通过将路径传递给函数split()返回的一对中的第二个元素。
os.path.split
的文档对此表示(强调):
将路径名路径拆分为一对(头,尾),其中tail是最后的路径名组件,而head是导致该路径名的所有内容。尾部永远不会包含斜线。 如果路径以斜线结尾,则尾巴将为空。
在os.path.split
上调用"/tmp/"
会产生('/tmp', '')
。因为该对的第二个元素是''
,所以基名返回''
。
答案 1 :(得分:2)
文档中提到了类似的内容
https://docs.python.org/3/library/os.path.html#os.path.basename
请注意,此函数的结果与Unix中的 不同 基本名称程序;如果“ / foo / bar /”的基本名称返回“ bar”, basename()函数返回一个空字符串('')。
显然,这只是选择。