【问题标题】:Python: How to check unformatted mounted volumes that are named on storage drivePython:如何检查在存储驱动器上命名的未格式化安装卷
【发布时间】:2014-04-18 16:45:40
【问题描述】:

我使用的是 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() 只检查路径名是否存在。它不检查路径名是否为卷。

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

【问题讨论】:

    标签: python-2.7 windows-7-x64


    【解决方案1】:

    似乎没有用于检查卷内卷的 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    
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 2015-06-02
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多