擅长:python、mysql、java
<p>这似乎结合了ephimient采用的<code>/proc/partitions</code>和<code>/sys/class/block</code>方法。</p>
<pre><code>#!/usr/bin/python
import os
partitionsFile = open("/proc/partitions")
lines = partitionsFile.readlines()[2:]#Skips the header lines
for line in lines:
words = [x.strip() for x in line.split()]
minorNumber = int(words[1])
deviceName = words[3]
if minorNumber % 16 == 0:
path = "/sys/class/block/" + deviceName
if os.path.islink(path):
if os.path.realpath(path).find("/usb") > 0:
print "/dev/%s" % deviceName
</code></pre>
<p>我不知道这是多么便携或可靠,但它为我的U盘工作。当然<code>find("/usb")</code>可以变成更严格的正则表达式。做mod 16也可能不是找到磁盘本身并过滤掉分区的最佳方法,但是到目前为止,它对我是有效的。</p>