petropavel: (Default)
Я решил в порядке самостоятельного изучения Python-а небольшие примеры разбирать (а то и писать) вместе с коллегой.
Примерно так, как было в анекдоте про лектора: "третий раз объяснил, уже сам понял, а они всё не понимают!!"

Первый пример: есть директория (с вложенными поддиректориями), в них лежат файлы с именами, сформированными по некоторому правилу. Нужные нам директории именуются по дате (в формате YYYYMMDD), + рекурсивно всё, что внутри.
Задача - отобрать файлы позднее определённой даты (по имени папки), перекодировать из MS-DOS в Windows-кодировку, сложить в общую папку кучей.
Пригодился модуль os (os.getcwd(), os.path.join(), os.walk() ), срезы строк, списки списков, списки туплов и пр (os.walk вообще благодатный пример, чтобы увидеть, что такое "простые" питоньи структуры данных).
Также файловые объекты, readlines(), итерация по readlines().
Из хулиганских побуждений впихнул туда ещё и лямбду:

outfile.writelines( map ( lambda s: s.decode("cp866").encode("cp1251"), infile.readlines() ))


Второй пример, из файла
счёт АКТПАСС 1(или 2)
счёт АКТИВ_ВХ сумма
счёт ПАССИВ_ВХ сумма
счёт ОБОРОТ_ДЕБ сумма
счёт ОБОРОТ КРЕ сумма
....

сделать такой:
счёт,А(П),сумма_вх_актив,сумма_вх_пассив,оборот_деб,оборот_кред,...
другой_счёт,А(П),сумма_вх_актив,сумма_вх_пассив,оборот_деб,оборот_кред,...

Тут удалось показать, что такое словари (получился словарь словарей), keys(), has_key(), sort()

Третий пример, для души - слить на диск содержимое веб-форума, для оффлайнового чтения.
Есть страничка-список тем, считать, отобрать оттуда ссылки определённого вида (на сами темы),
сохранить на диск сами темы, и рядышком сформировать оглавление index.html, корректно ссылающееся на сохранённые файлы.
Пригодились urllib (urllib2), регулярные выражения.
Заточки под общий случай веб-форума не требовалось, парсер строить решили не заморачиваться.

Правда, ещё не дописали - неплохо бы модифицировать ссылки на предыдущую-следующую тему внутри страничек, и до кучи скачивать аттачменты. Самый шик был бы ещё и вырезать из страничек шапки-подвалы-баннеры, но это уже потом.

Profile

petropavel: (Default)
petropavel

September 2015

S M T W T F S
   12345
6789101112
13141516171819
20212223242526
27282930   

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2017 02:43 am
Powered by Dreamwidth Studios