我正在运行一个实用程序来解析df
命令的输出。我捕获输出并将其发送到解析器。下面是一个示例:
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk2 1996082176 430874208 1564695968 22% 2429281 4292537998 0% /
devfs 668 668 0 100% 1156 0 100% /dev
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
函数如下:
^{pr2}$但是我得到了以下输出:
['/dev/disk2', '1996082176', '430876480', '1564693696', '22%', '2429288', '4292537991', '0%', '/']
['devfs', '668', '668', '0', '100%', '1156', '0', '100%', '/dev']
['map', '-hosts', '0', '0', '0', '100%', '0', '0', '100%', '/net']
['map', 'auto_home', '0', '0', '0', '100%', '0', '0', '100%', '/home']
问题是map -host
应该是单个元素(对于Filesystem
列)。
我尝试应用regex tokens = re.split(r'\s{2,}', line)
,但结果仍然不正确:
['/dev/disk2', '1996082176 430869352 1564700824', '22% 2429289 4292537990', '0%', '/']
解析输出的正确方法是什么?在
因为FS可能会有多个空格,而且只要你能预先确定你可以使用不同的分隔符来拆分并最终组合它们。在
但这行不通的是
fs
被一个大的空格隔开。在同意使用
os.statvfs(path)
是更好的工具的评论。df
将是subprocess
调用。在只需在后面跟一个数字或
/
的一个或多个空格上拆分如果这是您想要的行为,我能看到的最简单的方法就是连接数组的第一个元素,直到到达一个数值元素。在
所以像这样:
或者你可以试试@cricket_007的建议:
^{pr2}$相关问题 更多 >
编程相关推荐