Python:检查/ dev / disk设备是否存在
我正在尝试编写python脚本以查明/ dev中是否存在磁盘设备,但它总是会产生False。 任何其他方式来做到这一点?
我试过了
>>> import os.path
>>> os.path.isfile("/dev/bsd0")
False
>>> os.path.exists("/dev/bsd0")
False
$ ll /dev
...
brw-rw---- 1 root disk 252, 0 Nov 12 21:28 bsd0
...
这没有经过严格的测试,但似乎工作:
import stat
import os.stat
def disk_exists(path):
try:
return stat.S_ISBLK(os.stat(path).st_mode)
except:
return False
结果:
disk_exists("/dev/bsd0")
True
disk_exists("/dev/bsd2")
False
一些非常规情况正在发生。
os.path.isfile()
将为常规文件返回True
,对于设备文件,这将是False
。
但是对于os.path.exists()
,documetation指出,如果“未授予权限执行os.stat()
”,则可能返回False
。 仅供参考os.path.exists
的实现是:
def exists(path):
"""Test whether a path exists. Returns False for broken symbolic links"""
try:
os.stat(path)
except OSError:
return False
return True
所以,如果os.stat
在你os.stat
失败,我不会看到ls
如何成功( ls
AFAIK也调用stat()系统调用)。 所以,检查什么os.stat('/dev/bsd0')
是提高理解为什么你不能够检测与特定设备文件的存在os.path.exists
,因为使用os.path.exists()
应该是检查块设备文件存在的有效方法。