使用Python在Linux、Windows和Mac上列出磁盘驱动器的跨平台方法?

12 投票
4 回答
19012 浏览
提问于 2025-04-16 03:27

我正在使用Python2.6,想要列出系统可能有的磁盘驱动器。

在Windows系统上,磁盘驱动器可能是像 C:/D:/E:/ 这样的格式。在Linux系统上,可能是像 /boot/media/SDCard 这样的路径。而在Mac上,我不太清楚,可能是在 /Volumes 下面。

有没有人知道一种可以在Linux、Windows和Mac上都能用的方法呢?

谢谢!

4 个回答

2

Eric Smith 提到的方法,使用 psutil 在 Windows 上效果很好,但在 OS X 上,我更喜欢这个:

from os import listdir
listdir('/Volumes')

这个方法会返回更容易理解的名称,至少在我的情况下,这样更好(比如,它会给你 Macintosh HD,而不是 //dev/disk0s2)。

18

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')]
3

其实,Linux设备的命名方式并没有一个统一的标准来确保你能找到一个可以格式化的块设备。虽然有一些约定,但这些约定差别很大。我可以把我的U盘叫做/Thomas/O,想怎么命名就怎么命名。而且在Python中,没有跨平台的方法可以知道:

  1. /Thomas/O对应的是/dev/sdf1
  2. /dev/sdf1上可以创建一个FAT32文件系统
  3. /dev/sdf并是比/dev/sdf1更优先的选择

我很确定,也没有一个跨平台的Python模块能让你知道在Windows系统中H:/是可以格式化的,而Z:/则不可以。

每个系统都需要自己特定的检查和验证,最好的方法是通过研究开源的磁盘操作软件来学习这些内容。

撰写回答