[英]Listing all usb mass storage disks using python
我的系統中插入了幾個USB磁盤。 我想列出所有這些人:
/dev/sdb
/dev/sdc
.... ans so on..
請記住,我不想像/dev/sdb1
這樣列出分區。 我正在尋找Linux下的解決方案。 嘗試過cat /proc/partitions
。
major minor #blocks name
8 0 488386584 sda
8 1 52428800 sda1
8 2 52428711 sda2
8 3 1 sda3
8 5 52428800 sda5
8 6 15728516 sda6
8 7 157683712 sda7
8 8 157682688 sda8
11 0 1074400 sr0
11 1 47602 sr1
8 32 3778852 sdc
8 33 1 sdc1
8 37 3773440 sdc5
但是它列出了所有磁盤,無法確定哪一個是USB存儲磁盤。 我正在尋找不需要額外安裝軟件包的解決方案。
在/dev
列出正確的路徑:
ls -l /dev/disk/by-path/*-usb-* | fgrep -v part
您可以將Klaus D.的建議轉換為Python代碼,如下所示:
#!/usr/bin/env python
import os
basedir = '/dev/disk/by-path/'
print 'All USB disks'
for d in os.listdir(basedir):
#Only show usb disks and not partitions
if 'usb' in d and 'part' not in d:
path = os.path.join(basedir, d)
link = os.readlink(path)
print '/dev/' + os.path.basename(link)
path
包含以下格式的信息:
/dev/disk/by-path/pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:0
這是一個符號鏈接,因此我們可以使用os.readlink()
獲得偽scsi設備名稱。
但這會以以下格式返回信息:
../../sdc
因此我們使用os.path.basename()
進行清理。
而不是使用
'/dev/' + os.path.basename(link)
您可以使用以下命令生成'/dev/sdc'
格式的字符串
os.path.normpath(os.path.join(os.path.dirname(path), link))
但我認為您會同意前一種技術更簡單。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.