python新手。
我正在尝试解析“fdisk -l”
的输出 Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 206847 204800 100M 7 HPFS/NTFS/exFAT
/dev/sda2 206848 254308949 254102102 121.2G 7 HPFS/NTFS/exFAT
/dev/sda3 254310398 488396799 234086402 111.6G 5 Extended
/dev/sda5 254310400 478828543 224518144 107.1G 83 Linux
/dev/sda6 478830592 488396799 9566208 4.6G 82 Linux swap / Solaris
我有这段代码:
import os
for line in os.popen('/sbin/fdisk -l').readlines():
if line.find('/dev/') !=0: continue
columns = line.split()
print columns[0].split('/')[-1]
print columns[1]
产生此输出:
sda1
*
sda2
206848
sda3
254310398
sda5
254310400
sda6
478830592
除了我稍后将要排序的明显格式问题之外,如何阻止它识别Boot列上的Asterisk?
我知道我可能用像AWK之类的东西来解决这个问题,完全忽略了Boot列,但我想尝试用Python来做这个,因为我还在学习。
答案 0 :(得分:0)
我似乎找到了使用“re.split”的答案
for line in os.popen('/sbin/fdisk -l').readlines():
if line.find('/dev/') !=0: continue
columns = re.split("[, \-!?:\*]+", line)
print columns[0]
print columns[1]
给出:
/dev/sda1
2048
/dev/sda2
206848
/dev/sda3
254310398
/dev/sda5
254310400
/dev/sda6
478830592