
/Cw3: Różnice pomiędzy wersjami
Z Brain-wiki
|  (Utworzono nową stronę "= TI:WTBD/Ćwiczenia 3 =  Tu sporo czasu nam zeszło na przypomnieniu, na czym polega obróbka linii poleceń przez powłokę, rozwijanie wzorców nazw plików itd....") | |||
| Linia 5: | Linia 5: | ||
| Po czym przeszliśmy do przykładu związanego z analizą danych w postaci tekstu delimitowanego (rekordy z separatorem pól): | Po czym przeszliśmy do przykładu związanego z analizą danych w postaci tekstu delimitowanego (rekordy z separatorem pól): | ||
| − | <source lang=" | + | <source lang="python"> | 
| #! /usr/bin/python | #! /usr/bin/python | ||
| # coding: utf-8 | # coding: utf-8 | ||
Aktualna wersja na dzień 14:56, 23 maj 2015
TI:WTBD/Ćwiczenia 3
Tu sporo czasu nam zeszło na przypomnieniu, na czym polega obróbka linii poleceń przez powłokę, rozwijanie wzorców nazw plików itd.
Po czym przeszliśmy do przykładu związanego z analizą danych w postaci tekstu delimitowanego (rekordy z separatorem pól):
#! /usr/bin/python
# coding: utf-8
# luser.py
import nis
from sys import stdout, stderr, argv
def main(args):
    passwd_map = nis.cat('passwd')
    found = list()
    for who in args:
        if who in passwd_map: # dokładne dopasowania loginu wypisujemy najpierw
            found.append(passwd_map[who].split(':'))
            del passwd_map[who] # po to aby każdego pasującego wypisać raz
    for who in args:
        who = who.lower()
        for rec in passwd_map.values():
            rec = rec.split(':')
            if (who in rec[0] # pasuje do loginu
                    or who in rec[4].lower() # pasuje do gecos
            ):
                found.append(rec)
                del passwd_map[rec[0]]
    for rec in found:
        output(rec)
    if not found:
        stdout.write(u'*** Nie znaleziono pasujących rekordów.\n'.encode('utf-8'))
def output(rec):
    stdout.write(
        (u"%-10s%-35s%8s\n" % (rec[0], rec[4][:34], rec[5].split('/')[2]))
        .encode('utf-8')
    )
    # stdout.flush() # hmm..
    
if __name__ == '__main__':
    try:
        nis.get_default_domain()
    except nis.error:
            stderr.write(
                u'Ten system nie korzysta z NIS, albo domena niedostępna.\n'
                .encode('utf-8')
            )
            exit(2)
    prog, args = argv[0], argv[1:]
    if not args:
        stderr.write(
            'Użycie: {0} str1 [ str2 .. ]\n'
            .format(__file__)
        )
        exit(1)
    main(args)

