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()应该是检查块设备文件存在的有效方法。

链接地址: http://www.djcxy.com/p/88799.html

上一篇: Python: Check if a /dev/disk device exists

下一篇: tensorflow loss minimization type error