我正在查看一些Flask代码,但我一直在努力了解dirname的工作方式。 例如
>>> os.path.abspath('./')
返回
'/home/mm'
符合预期。
>>> dirname('./')
'.'
dirname
为什么不提供相同的输出?
答案 0 :(得分:2)
这是the doc关于os.path.dirname
的内容:
返回路径名path的目录名。这是通过将路径传递给函数split()返回的一对中的第一个元素。
因此它返回传递路径的目录名称。
即os.path.dirname("/a/b/c")
返回"/a/b"
。
此功能由os.path.basename
补充,它返回文件的名称。要继续同一示例,os.path.basename("/a/b/c")
将返回"c"
。
另一方面,os.path.abspath
完全不同,如the doc再次说明:
返回路径名路径的标准化绝对化版本。在大多数平台上,这等效于按如下方式调用函数normpath():normpath(join(os.getcwd(),path))。
因此os.path.abspath("./a/b/c")
将返回"./a/b/c"
的绝对版本,即相对于文件系统根目录的绝对版本。
如果您位于homedir中,它将给您"/home/username/a/b/c"
。