Python 为什么listdir()函数是os模块的一部分而不是os.path?
Python 为什么listdir()函数是os模块的一部分而不是os.path?,python,listdir,Python,Listdir,os.path模块似乎是所有路径相关函数的默认模块。然而,listdir()函数是os模块的一部分,而不是os.path模块,即使它接受路径作为输入。为什么要做出这个设计决定?我个人觉得os和os.path之间的划分有点不一致。根据文档,os.path应该只是与特定平台的路径一起工作的模块的别名(即,在OSX、Linux和BSD上,您将获得posixpath,在Windows或古老的Mac上,您将获得其他东西) >>>导入操作系统 >>>帮助(操作系统) 有关模块操作系统的帮助: 名称 操作系统
os.path
模块似乎是所有路径相关函数的默认模块。然而,listdir()
函数是os
模块的一部分,而不是os.path
模块,即使它接受路径作为输入。为什么要做出这个设计决定?我个人觉得os
和os.path
之间的划分有点不一致。根据文档,os.path
应该只是与特定平台的路径一起工作的模块的别名(即,在OSX、Linux和BSD上,您将获得posixpath
,在Windows或古老的Mac上,您将获得其他东西)
>>>导入操作系统
>>>帮助(操作系统)
有关模块操作系统的帮助:
名称
操作系统-Mac、NT或Posix的操作系统例程,具体取决于我们使用的系统。
...
>>>帮助(os.path)
有关模块posixpath的帮助:
名称
posixpath—Posix路径名上的常见操作。
listdir
函数不在路径本身上运行,而是在路径标识的目录上运行。os.path
中的大多数函数在实际路径上运行,而不是在文件系统上运行
这意味着os.path
中的许多函数都是字符串操作函数,而os
中的大多数函数都是IO函数/syscalls
示例:
,os.path.join
,os.path.dirname
,都是字符串操作函数os.path.splitext
,os.listdir
,os.getcwd
,os.remove
都是系统调用,实际上是触摸文件系统os.stat
具有os.path
、存在
、getmtime
,以及其他基本上是围绕islink
的包装,并触摸文件系统。我认为他们被错误分类,但其他人可能不同意。os.stat
os.path的版本,而无需在该平台上实际运行。这记录在os.path
的文档中
但是,如果要操纵始终采用不同格式之一的路径,也可以导入和使用各个模块。它们都有相同的接口:
posixpath
用于UNIX样式的路径
ntpath
用于Windows路径
macpath
用于旧式MacOS路径
os2emxpath
用于OS/2 EMX路径
你不能用操作系统做同样的事情,这没有任何意义。回答得好。谢谢我同意您在os.path中放置非字符串操作。可能还有另一个原因。@euphoria83:“不破坏现有代码”是一个很好的理由。尽管他们本可以把它移到Python3上。
>>> import os
>>> help(os)
Help on module os:
NAME
os - OS routines for Mac, NT, or Posix depending on what system we're on.
...
>>> help(os.path)
Help on module posixpath:
NAME
posixpath - Common operations on Posix pathnames.