我正在使用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()
仅检查路径名是否存在。它不会检查路径名是否为卷。
提前感谢您对此提供的任何帮助
答案 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
由于