Here is a complete example:
import subprocess import re p = subprocess.Popen("df -h", stdout=subprocess.PIPE, shell=True) dfdata, _ = p.communicate() dfdata = dfdata.replace("Mounted on", "Mounted_on") columns = [list() for i in range(10)] for line in dfdata.split("\n"): line = re.sub(" +", " ", line) for i,l in enumerate(line.split(" ")): columns[i].append(l) print columns[0]
Mount points are assumed to not contain spaces.
Below is a more complete (and complicated solution) that is not a hard number of columns:
import subprocess import re def yield_lines(data): for line in data.split("\n"): yield line def line_to_list(line): return re.sub(" +", " ", line).split() p = subprocess.Popen("df -h", stdout=subprocess.PIPE, shell=True) dfdata, _ = p.communicate() dfdata = dfdata.replace("Mounted on", "Mounted_on") lines = yield_lines(dfdata) headers = line_to_list(lines.next()) columns = [list() for i in range(len(headers))] for i,h in enumerate(headers): columns[i].append(h) for line in lines: for i,l in enumerate(line_to_list(line)): columns[i].append(l) print columns[0]
Zaar hai
source share