当传递带有斜杠的路径时,为什么os.path.basename返回一个空字符串?

时间:2019-03-01 19:10:22

标签: python

是否有原则上的原因,为什么在os.path.basename的参数中使用结尾目录定界符会产生一个空字符串?除了不确定的实现边缘情况或实现副作用之外,我不确定是否可以对返回值有任何理解。

>>> import os
>>> os.path.basename('/tmp')
'tmp'
>>> os.path.basename('/tmp/')
''

2 个答案:

答案 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()函数返回一个空字符串('')。

显然,这只是选择。