#!/usr/bin/env python3

def read_file(path: str) -> "List of lines":
    #f = open(path, 'r')
    with open(path, 'r') as f:
        # f.read(buflen) - binary read
        # f.readline() - 1 Textzeile lesen -> str
        # f.readlines - alle Textzeilen lesen ->str
        # f ist gleichzeitig Iterator
        # 1 möglichkeit
        #lines = list(map(lambda s : s.rstrip(), f))
        # 2 möflichkeit
        lines = list(map(str.rstrip, f))
    # 3 möglichkeit
    #lines = []
    # for line in f.readlines():
    #    lines.append(line.rstrip())
    # f.close()
    return lines

def build_userlist(lines) -> "List of user dicts":
    result = []
    for line in lines:
        result.append(parse_passwd_lines(line))
    return result

def parse_passwd_lines(line: str) -> "Dict of passwd details":
    parts = line.split(':')
    userdict = {
        "username": parts[0],
        "uid": int(parts[2]),
        "gid": int(parts[3]),
        "realname": parts[4].split(',')[0],
        "gecos": parts[4],
        "home": parts[5],
        "shell": parts[6]
    }
    return userdict


test = read_file("/etc/passwd")
userlist = [i['username'] for i in build_userlist(test)]
print(userlist)