Last active
September 27, 2023 22:39
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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
In python3,
output
need to decode:output = [i.decode('UTF-8') for i in output]