Форум сайта python.su
solomon243каким ? для доступа к последнему элементу итератора надо прочитать все предыдущие
Думал об этом. Но может каким- то образом итераторы использовать?
#!/usr/bin/env python3 # выводит n строк с конца файла import io def reverse_file(fin): fin.seek(0, io.SEEK_END) pos = fin.tell() while pos > 0: pos -= 1 fin.seek(pos, io.SEEK_SET) yield fin.read(1) def tail(fname, maxn): assert maxn > 0 n = 0 lst = [] with open(fname, encoding='utf-8') as fin: for c in reverse_file(fin): if c == '\n': n += 1 if n > maxn: break lst.append(c) s = ''.join(reversed(lst)) return s print(tail('/etc/passwd', 3), end='')
[guest@localhost py]$ ./rev.py
pulse:x:993:993:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
guest:x:1000:1000:guest:/home/guest:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
[guest@localhost py]$
Отредактировано py.user.next (Авг. 3, 2013 18:58:50)
Офлайн