windows 7 x64-Python:如何检查存储驱动器上命名的未格式化已装入卷



我使用的是python 2.7,对它有点陌生。

我有一个设备正在尝试为其编写python脚本,该脚本将检查存储驱动器分区上是否存在该卷。这必须非常具体,才能仅检查卷(而不仅仅是路径和驱动器号)。该卷有一个名称(我们称之为XYZ),并且存在于设备大容量存储中。

cmd中使用了一个名为DISKPART的windows工具。长期的方法是使用脚本参数"LIST VOLUMES"执行DISKPART,并将输出解析为文件。然后让python读取并匹配该文件中的行。我将向您展示文件的外观:

Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: BLAH
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     D                       DVD-ROM         0 B  No Media           
  Volume 1     C   BLAH         NTFS   Partition    149 GB  Healthy    System  
  Volume 2                      RAW    Partition      8 MB  Healthy            
    K:XYZ
  Volume 3     F   BLAH2        FAT    Partition     32 MB  Healthy            
    K:BLAH2
  Volume 4         BLAH3        NTFS   Partition   4608 MB  Healthy            
    K:BLAH3
  Volume 5     J   BLAH4        FAT    Partition   4256 KB  Healthy            
    K:BLAH4
  Volume 6     K   BLAH5        NTFS   Partition   1771 MB  Healthy            
  Volume 7         BLAH6        NTFS   Partition     20 GB  Healthy            
    K:BLAH6

正如您所看到的,即使像XYZ这样的卷未分区,也只列出了卷。有没有一种更简单的方法可以在python中完成同样的事情,或者我应该开始使用外部工具(DISKPART)并重新搜索解析文件中的XYZ行?

顺便说一下,os.path.ismount()只检查驱动器号。我需要它来读取卷名(而不仅仅是它所在的字母)。

os.path.exists()仅检查路径名是否存在。它不会检查路径名是否为卷。

提前感谢在此上提供的任何帮助

似乎没有python内置函数来检查卷内的卷。所以我用regex回答了我自己的问题。。。

test.py文件内容:

def check_mass_storage_dpp():
    with open('test1.txt', 'a+') as volumesFile:
        deviceMassStorage = 'Match Found'
        mainline = ''
        for line in volumesFile.readlines():
            if re.search('.*2.*', line):
                mainline = line
            if re.search('.*3.*', line):
                mainline = mainline + line
        if re.search(r'.*2.*n.*3.*', mainline):
            print deviceMassStorage
check_mass_storage_dpp()

test1.txt文件内容(这将是运行DISKPART脚本解析的输出文件):

  gArbage1G@rbage    
   gaRbage2G@rbage 
    garBage3G@rbage  
 garbAge4G@rbage    
    garbaGe5G@rbage    

感谢