Python 文件系统是否有其他组件而不是文件和目录?

Python 文件系统是否有其他组件而不是文件和目录?,python,filesystems,Python,Filesystems,我在一个视频教程中看到了这个python片段,它检查列出的项目是目录还是文件: for item in os.listdir("."): if os.path.isfile(item): # do something elif os.path.isdir(item): # do somethin else: # What is this case ?! 是否可能命中else语句?是。还有其他类型,如管道、套接字、设备节点。

我在一个视频教程中看到了这个python片段,它检查列出的项目是目录还是文件:

for item in os.listdir("."):
    if os.path.isfile(item):
        # do something
    elif os.path.isdir(item):
        # do somethin
    else:
        # What is this case ?!

是否可能命中else语句?

是。还有其他类型,如管道、套接字、设备节点。 例如,
isfile()
isdir()
对于
/dev
中的大多数文件返回False


您首先可以看到。

正如@sisoft所说,简单的答案是肯定的:确实存在支持文件和目录以外的文件类型的文件系统

如果您感兴趣,较长的答案是,文件系统支持的类型随文件系统的不同而变化很大。UNIX将大量内容视为“文件”(即文件系统中的对象),因此有多种类型。Windows有一组更受限制的对象(我认为只有文件、目录和链接(没有来源))

文件系统的POSIX规范(由许多文件系统实现)没有指定它必须支持哪些对象()

通常,文件系统是一个相当开放的术语,可以指任何对象存储。它存储的对象可以是任何东西

如果您想了解更多关于文件系统的信息,可以在其中的一章中简单介绍

有可能命中else语句吗

您的代码片段使用了文件和目录的狭义定义:

对于不存在的路径或由于常规文件和目录的权限错误,可能会触发
else
子句

:

i、 例如,除了常规文件和目录外,还可能有套接字、符号链接、管道、块/字符设备:

>>> import os
>>> import stat
>>> stat.S_ISBLK(os.stat('/dev/sda').st_mode)
True

可能存在仅对特定文件系统有意义的其他对象。

还有
islink
,但说明
isfile
isdir
始终遵循链接,以及
ismount
。是的。我记得我错了,
vi/dev/sda
,vi提示符说
/dev/sda不是一个文件
,你说的是文件系统条目类型还是通用文件类型?因为答案取决于文件系统的含义——它是从Unix开始的,还是作为数据布局的特定文件系统(比如ex3或NTFS)。
>>> import os
>>> import stat
>>> stat.S_ISBLK(os.stat('/dev/sda').st_mode)
True