Python:如何检查存储驱动器上指定的未格式化的已装入卷

时间:2014-04-18 16:45:40

标签: python-2.7 windows-7-x64

我正在使用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)和re.search来搜索解析文件中的XYZ行?

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

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

提前感谢您对此提供的任何帮助

1 个答案:

答案 0 :(得分:0)

似乎不是用于检查卷内卷的python内置函数。所以我用正则表达式回答了我自己的问题......

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    

由于