os.path.basename()和os.path.dirname()有什么区别?


139

os.path.basename()和之间有什么区别os.path.dirname()

我已经搜索了答案并阅读了一些链接,但听不懂。谁能给一个简单的解释?

Answers:


273

这两个函数都使用该os.path.split(path)函数将路径名拆分path为一对。(head, tail)

os.path.dirname(path)函数返回路径的开头。

例如:的目录名'/foo/bar/item''/foo/bar'

os.path.basename(path)函数返回路径的尾部。

例如:'/foo/bar/item'退货的基本名称'item'

来自:http : //docs.python.org/2/library/os.path.html#os.path.basename


24
请记住,如果要更换item使用item/,这是一个目录,然后os.path.split('foo/bar/item/')返回('foo/bar/item', '')
jkdev

1
如果路径是一个文件,例如“ foo.bar”,会发生什么?
赵刚

4
@jkdev是的,如果要获取路径中的最后一个目录名称,则应使用:os.path.basename(os.path.dirname(path))
tli2020

@ZhaoGang如果整个路径只是一个文件名,则os.path.basename(file_name)返回该文件名:here 'foo.bar',而os.path.dirname(file_name)返回一个空字符串:''
jkdev

4

总结一下布雷诺在上面提到的内容

假设您有一个带有文件路径的变量

path = '/home/User/Desktop/myfile.py'

os.path.basename(path) 返回字符串 'myfile.py'

os.path.dirname(path)返回字符串'/home/User/Desktop'(不带斜杠“ /”)

当必须给定完整路径名的文件名/目录名时,可以使用这些功能。

如果文件路径只是文件名(例如,而不是path = '/home/User/Desktop/myfile.py'您拥有myfile.py),则os.path.dirname(path)返回一个空字符串。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.