python设备要求_Python中文件系统设备的确定

你的问题是关于Linux的,所以这是(或多或少)Linux特有的。

下面是三个变量的代码示例,用于将主/辅映射到设备名称。解析/proc/partitions。

问问哈尔。Hal还跟踪“父”设备,这意味着您可以轻松地获得磁盘和分区。

你自己检查系统。这是哈尔获取信息的地方。

我认为/proc/partitions是最简单的—它只是一个要打开和检查的文件。哈尔给你提供了大部分信息,并抽象出许多细节。sysfs可以被视为比/proc/partitions更正确,并且不需要运行hal。

对于桌面程序,我会选择哈尔。在嵌入式系统上,我会使用sysfs。import os

def main():

dev = os.stat("/home/").st_dev

major, minor = os.major(dev), os.minor(dev)

print "/proc/partitions says:", ask_proc_partitions(major, minor)

print "HAL says:", ask_hal(major, minor)

print "/sys says:", ask_sysfs(major, minor)

def _parse_proc_partitions():

res = {}

for line in file("/proc/partitions"):

fields = line.split()

try:

tmaj = int(fields[0])

tmin = int(fields[1])

name = fields[3]

res[(tmaj, tmin)] = name

except:

# just ignore parse errors in header/separator lines

pass

return res

def ask_proc_partitions(major, minor):

d = _parse_proc_partitions()

return d[(major, minor)]

def ask_hal(major, minor):

import dbus

bus = dbus.SystemBus()

halobj = bus.get_object('org.freedesktop.Hal', '/org/freedesktop/Hal/Manager')

hal = dbus.Interface(halobj, 'org.freedesktop.Hal.Manager')

def getdevprops(p):

bdevi = dbus.Interface(bus.get_object('org.freedesktop.Hal', p),

"org.freedesktop.Hal.Device")

return bdevi.GetAllProperties()

bdevs = hal.FindDeviceByCapability("block")

for bdev in bdevs:

props = getdevprops(bdev)

if (props['block.major'], props['block.minor']) == (major, minor):

parentprops = getdevprops(props['info.parent'])

return (str(props['block.device']),

str(parentprops['block.device']))

def ask_sysfs(major, minor):

from glob import glob

needle = "%d:%d" % (major, minor)

files = glob("/sys/class/block/*/dev")

for f in files:

if file(f).read().strip() == needle:

return os.path.dirname(f)

return None

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值