Skip to content

Instantly share code, notes, and snippets.

@cahna
Last active September 27, 2023 22:39
Show Gist options
  • Save cahna/43a1a3ff4d075bcd71f9d7120037a501 to your computer and use it in GitHub Desktop.
Save cahna/43a1a3ff4d075bcd71f9d7120037a501 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())
@cahna
Copy link
Author

cahna commented Oct 13, 2016

Example output:

[{
  '%CPU': '6.2',
  '%MEM': '0.0',
  'COMMAND': '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python tester.py',
  'PID': '62826',
  'RSS': '5284',
  'STARTED': '10:34AM',
  'STAT': 'S+',
  'TIME': '0:00.03',
  'TT': 's000',
  'USER': 'jdoe',
  'VSZ': '2468628'
},
{
  '%CPU': '5.9',
  '%MEM': '0.4',
  'COMMAND': '/Applications/iTerm.app/Contents/MacOS/iTerm2',
  'PID': '61467',
  'RSS': '61248',
  'STARTED': '9:23AM',
  'STAT': 'S',
  'TIME': '0:13.82',
  'TT': '??',
  'USER': 'jdoe',
  'VSZ': '2677452'
},
...
]

@eteamin
Copy link

eteamin commented May 20, 2018

thanks

@webtic
Copy link

webtic commented Jun 12, 2018

cool, saved me from trying to get psutil to compile on an unsupported old os..

@ygb8745
Copy link

ygb8745 commented Jul 27, 2023

In python3, output need to decode:
output = [i.decode('UTF-8') for i in output]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment