我使用的是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
感谢