Skip to content

Instantly share code, notes, and snippets.

@mstfydmr
Forked from cahna/parse_ps_aux.py
Created March 20, 2018 13:42
Show Gist options
  • Save mstfydmr/b88147ae80450213764279b1d9427e57 to your computer and use it in GitHub Desktop.
Save mstfydmr/b88147ae80450213764279b1d9427e57 to your computer and use it in GitHub Desktop.
Parse the output of `ps aux` into a list of dictionaries representing the parsed process information from each row of the output.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pprint
import subprocess
def get_processes():
"""
Parse the output of `ps aux` into a list of dictionaries representing the parsed
process information from each row of the output. Keys are mapped to column names,
parsed from the first line of the process' output.
:rtype: list[dict]
:returns: List of dictionaries, each representing a parsed row from the command output
"""
output = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).stdout.readlines()
headers = [h for h in ' '.join(output[0].strip().split()).split() if h]
raw_data = map(lambda s: s.strip().split(None, len(headers) - 1), output[1:])
return [dict(zip(headers, r)) for r in raw_data]
pprint.pprint(get_processes())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment