2010-08-29 48 views
8

我想列出系統可能有的磁盤驅動器。Python和跨平臺的方式列出Linux,Windows和Mac上的磁盤驅動器

在Windows上,它可能類似於「C:/」,「D:/」,「E:/」。

在Linux上,它可能是類似「的/ boot」,「/媒體/ SD卡」等

而且我不知道是什麼滋味在Mac上。也許在/卷下。

有沒有人知道在Python中使用跨平臺方式(即在Linux,Windows和Mac上工作的方式)?

謝謝!

哦:簡單說明一下,我運行的是Python 2.6。

+0

你想用這個達到什麼樣的最終結果? – 2010-08-29 20:50:45

+0

我正在爲用戶構建一個界面來選擇連接到計算機的磁盤驅動器。它需要知道驅動器上可用的空間,並且能夠使用FAT32文件系統(可能)對其進行格式化,並且能夠訪問文件。 – 2010-08-29 20:54:46

+0

建議:將選定的部分取出以與您有權訪問的部分一起工作,使其工作,然後進行相對簡單的設備選擇。並且在格式化時要小心,以防萬一。 – msw 2010-08-29 21:16:13

回答

2

Linux設備並沒有真正的統一命名方案來保證您可以使用可形成的塊設備。有約定,但他們可以有很大的不同,我可以叫我的拇指驅動器/托馬斯/ O,如果我想並沒有跨平臺的方式在Python知道:

  1. 那/托馬斯/ O對應於的/ dev/sdf1上
  2. 那的/ dev/sdf1則有可能在上面做了FAT32文件系統
  3. 那的/ dev/SDF是首選到/ dev/sdf1上

我敢肯定,也沒有一個跨平臺的Python模塊,它可以讓你確定H:/是格式化的能夠在Windows系統上運行,但是Z:/不是。

每個系統都需要自己的特定檢查和驗證,您可以從學習開源磁盤操作軟件中學到最多的知識。

+0

我正在考慮像gparted這樣的程序如何做。但是,那不是跨平臺的,只有Unix(甚至是Linux),對嗎? 驅動器不一定必須是可格式化的。只是,他們應該被附上或內部媒體。由於我主要處理SD卡,因此我只列出了Linux下的/ media,Mac上的Volumes以及Windows上的所有磁盤驅動器(C:/,D:/等)。 – 2010-08-29 21:39:56

+0

不要思考它,偷走它。我的意思是,這些想法,但也是來源,除非你喜歡重新發明輪子。 http://sourceforge.net/projects/gparted/files/gparted/ – msw 2010-08-29 22:31:45

+0

即使在Linux上甚至不存在任何/媒體,也無法保證將安裝未格式化的驅動器供您查看。甚至NT/Vista/7都允許以Unixy方式將設備掛載到任意目錄。 – msw 2010-08-29 22:37:04

11

psutil包(https://pypi.python.org/pypi/psutil)具有disk_partitions功能。

的Windows:

>>> import psutil 
>>> psutil.disk_partitions() 
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='', opts='cdrom'), sdiskpart(device='F:\\', mountpoint='F:\\', fstype='NTFS', opts='rw,fixed')] 

的Linux:

>>> import psutil 
>>> psutil.disk_partitions() 
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sr0', mountpoint='/media/VBOXADDITIONS_4.3.10_93012', fstype='iso9660', opts='ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks')] 
+0

在OS X上,我的驅動器名稱顯示在Finder中(Macintosh HD ...我敢肯定這是默認名稱。)任何想法如何找到該名稱,因爲這是顯示的內容.. 。'sdiskpart(device ='/ dev/disk0s2',mountpoint ='/',fstype ='hfs',opts ='rw,local,rootfs,dovolfs,journaled,multilabel')''。 – ArtOfWarfare 2015-04-15 00:13:55

+0

我不太瞭解OS X,但我懷疑這將是磁盤的標籤。也許呼籲[disklabel](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/disklabel.8.html)? – 2015-04-15 16:26:54

1

Eric Smith's answer to use psutil很適合我在Windows,但在OS X上,我更喜歡這樣的:

from os import listdir 
listdir('/Volumes') 

它給你回至少在我的情況下,這是人類可讀的名稱,將是更可取的(IE,它給你Macintosh HD而不是//dev/disk0s2。)

+0

從psutil返回的命名元組中獲取'mountpoint'屬性以獲取人類可讀的名稱 – Debjit 2016-01-27 14:55:17

+0

@Debjit - Nope。在OS X上返回'/'而不是'Macintosh HD' – ArtOfWarfare 2016-02-08 16:22:07

相關問題