Python - 检查linux分区是只读还是读写?

时间:2015-02-11 14:04:58

标签: python linux

我有一个在beaglebone上运行的python应用程序。我如何(在Python中)检查“/ mnt”分区是以只读还是以读写方式挂载?

3 个答案:

答案 0 :(得分:5)

编辑:答案假设您计划写入/ mnt。

我只是尝试写入它并捕获OSError异常来处理只读的情况。

答案 1 :(得分:3)

这应该适合你:

def isMountReadonly(mnt):
    with open('/proc/mounts') as f:
        for line in f:
            device, mount_point, filesystem, flags, __, __ = line.split()
            flags = flags.split(',')
            if mount_point == mnt:
                return 'ro' in flags
        raise ValueError('mount "%s" doesn\'t exist' % mnt)

print "read only: %s" % isMountReadonly('/mnt')

输出:

read only: False

答案 2 :(得分:0)

解决方案非常简单,只有1个系统调用(statvfs)。

stat = os.statvfs('/mnt')

# Python < 3.2
ST_RDONLY = 1
readonly = bool(stat.f_flag & ST_RDONLY)

# Python >= 3.2
readonly = bool(stat.f_flag & os.ST_RDONLY)