Как стать автором
Обновить
171
0
Вадим Карпусенко @Vadikus

Пользователь

Отправить сообщение
Простите пожалуйста, я совершенно запутался о чём мы говорим. Перечитал ещё раз комментарий susl'а и понял что я вообще не про то говорил, отвечая на его вопрос… последствия 4х утра.

По порядочку. Я буду повествовать, а Вы поправите меня, где я начну ошибаться.
1) С комментарием susl'a, действительно плохо как-то вышло. Я стараюсь таких конструкций не использовать. После появления with statement в python 2.6 — правильной конструкцией будет являться:

Copy Source | Copy HTML
  1. with open(filename, 'r') as IN:
  2.     for line in IN:
  3.         processing(line)


With statement обеспечивает обязательное закрытие файла при любых, даже самых непредвиденных обстоятельствах.

2) Ему в ответ я нагородил огородов с main функцией. В неё я вынес запись данных из многострочечной переменной monitor в тестовый файл. Именно его мы будет вчитывать для тестов. Проблема оказалась в том, что если попытаться выполнить os.remove('test_mon'), где 'test_mon' — это path к тестовому файлу данных, и поставить эту функцию сразу за unittest.main(), то файл так и остаётся не удалённым после прохождения тестов. Может этот самый unittest.main() после своего выполнения останавливает внешний скрипт тоже. Поэтому только finally можно заставить что-то выполниться в любом случае. Есть конечно методы самого unittest модуля, например, которые выполняются сразу после исполнения какого-либо теста. Можно наверное удаления файла поручить последнему тесту в самом конце.

3) В readin_monitor(monitor) передаётся строка. monitor — это название файла, который потом отрывается дурацким способом (смотри пункт 1) в теле самой функции. Можно в функцию передавать указатель на файл, или это правильнее назвать файловым объектом. Кажется, именно так Вы советовали: readin_monitor(open(filename)). Но я до конца не понимаю что этим можно выиграть. Открываем файл в main — передаём функцию указатель. Кусок кода перетекает из тела функции в main. Я не вижу того, что Вы пытаетесь мне показать. Можно поподробнее пожалуйста?

Спасибо.
Про замыкания, не могу ничего припомнить. Можете навести на материал? Заранее спасибо.
Да, Вы правы. Действительно заработало. Может это были особенности python 2.5, что приходилось так изгаляться с global объявлениями.
Но в любом случае спасибо за наводку. Нужно будет ещё раз перечитать области видимости переменных.
pass в файнале не нужен — он там случайно оказался.
я так в последствии и сделал, правда получилось как-то кривовато. Приведу код:

Copy Source | Copy HTML
  1. def main():
  2.     with open('test_mon', 'w') as MON:
  3.         MON.write(monitor)
  4.     try:
  5.         unittest.main()
  6.     finally:
  7.         os.remove('test_mon')
  8.         pass
  9.     return  0


Удаление файла сидит в файнале, иначе файл не удаляется. При этом не появляется никакой эксепшн… Не знаю в чём причина. Но с файнал стейтментом — работает.
Спасибо. Я прочитал об этих двух методах уже после публикации. Думал упомянуть их в статье, но не стал.
Я так понимаю эти методы так же работаю и со списком. При этом приблизительно будут сравниваться элементы списка. Так?
Т.к. переменные глобальные, то доступ к ним будет возможен из любого окружения.

Если их не объявить глобальными, то достучаться до них из тела функции можно будет только объявляя их внутри функции как nonlocal или опять таки global. Проще один раз это сделать во внешнем окружении.
Пока кинул статью в свой персональный блог. Не знаю достойна ли статейка блога про Питон.
Хотя как пример такого шаблона с OptionParser и UnitTest — может и ничего.
Мне показалось, или перевод действительно сильно отличается от оригинала. Я просто читаю оригинальную версию на английском, а вот тут лежит кусочек перевода на русский язык (7ая глава). Если внимательно присмотреться, то даже картинки как-то урезаны, переведены только частично — много текста просто выкинуто.
Пока существует только единственный русский перевод? Или это я такой удачливый — попал на не лучший экземпляр…
Вот за что люблю хабр, обязательно найдётся и третий и четвёртый вариант показать всем как можно лапухнуться (я про себя)…
Действительно работает. Спасибо, мил человек. Одной проблемой меньше.

Хотя я научился передавать команду сессии скрина, это тоже полезный навык для моих симуляций на блейдами. (это я опять просто так бурчу, что бы хоть как-то оправдаться =)
Если я правильно понял, то MPD удобно ставить на медиацентры и файловые хранилища, с которых потом можно проигрывать музыку на всю квартиру/дом/квартал (нужное подчеркнуть). А gui — это просто приложение для управлением этим демоном с любой удалённой машины. Я угадал?
Ой! «Avahi/Zeroconf support» а вот это особенно порадовало. Всё — проэкт на завтра, заводим свой трактор с блекджеком.
Sonata мне тоже понравилась. Подмывало кинуть сюда её screenshot, но тогда это получиться полный оффлейм.
Про MPD рашье не знал — спасибо. Интересный проэкт. Только вот ГУЁв под него сразу найти не получилось. Может я не там ищу?
Ни у в оправдание хотелось бы ещё сказать, что rhythmbox обладает целым набором положительных черт. Он лёгок на подъём, система плагинов с вполне приличным функционалом, каталогизация и плейлисты, и, что не самое последнее, сносная работа с iPOD'ами.
:set scrollbind

— отличная опция для перевода. Будут одновременно скроллиться все окна.
А кто-нибудь в курсе как заставить vim работать в режиме vimdiff? Поясню — если открыты два окна бок-о-бок, то при прокрутке одного — скроллилось бы и второе? Точно знаю что можно так сделать, но не находил как. Подскажете?
Не принципиально конечно, сам только недавно заметил — кроме обычного поста на хабре, есть ещё и пост-перевод. Можно было под этим стилем оформить, хотя опять-таки, это сути не поменяет.
Спасибо за ролик. Давно хотел Феймана увидеть воочию.
Отличный дезайн, можно пользователю оставить выбор цвета фона. Слишком светлый (белый) фон будет меня, например, чуть-чуть напрягать. И ещё к скорости и проценту ошибок добавить третий пункт — процент напечатанного текста. Пока чуть не ясна идея в уроками — будет как в «Соло» (Владимир Владимирович Шахиджанян, не обращайте внимание) — т.е. линейное прохождение, или же на усмотрение пользователя, или любой текст… Тут можно многое придумать.
Привет земляк. Тут что, одни америкосы собрались?
Я мог бы попробовать рассказать про Атлантическое побережье. Т.к. сам сейчас в Северной Каролине живу. Был и на Флориде, и в Пенсильвании. Обзорно написать что-то в двух предложениях сложно. Лучше задавайте вопросы конкретные — попробуем на пару с mrgall`ом ответить.
ssh-тунель — весчь полезная в хозяйстве. С ней на душе спокойнее.

Информация

В рейтинге
Не участвует
Откуда
Santa Clara, California, США
Дата рождения
Зарегистрирован
Активность