Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.28.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import os
In [2]: from pathlib import Path
In [3]: os.path.basename('c:/one/two/three/')
Out[3]: ''
In [4]: os.path.basename(Path('c:/one/two/three/'))
Out[4]: 'three'
1条答案
按热度按时间hgc7kmma1#
根据Python文档,
os.path.basename
只是简单地使用.split()
,因此它是一个相当初级的实现(文档中甚至明确提到不要期望得到与Unix“basename”程序相同的结果)。在
pathlib
中,Path
、PurePath
或PureWindowsPath
对象更为复杂。它们可以表示文件、目录或其他内容。在调用其方法之前,对象不会对其所表示的内容做出任何假设因此Path("c:/temp/one/two/").name
将返回two
,因为two
只是one
中的一个子目录(Path
对象不关心它是文件还是目录)。要使用
os.path.basename
获得奇偶校验,可以执行以下操作或者,如果你想要一个单行程序(在Python 3.9+上):
顺便说一下,
os.path.basename
确实接受Path
对象作为参数。* 但是 *,行为是不同的: