Python 文件系统是否有其他组件而不是文件和目录?
我在一个视频教程中看到了这个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语句?是。还有其他类型,如管道、套接字、设备节点。
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