/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....") |
(Brak różnic)
|
Wersja z 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)