Оглавление
   Предисловие
   "А теперь нечто совершенно иное..."
   Об этой книге
   О четвертом издании
   Влияние Python 3.X на эту книгу
   Использование примеров из книги
   Как связаться с издательством O'Reilly
   Типографские соглашения
   Благодарности
   Об авторе
   Часть I. Начало
   Глава 1. Предварительный обзор
   "Программирование на Python": краткий очерк
   Постановка задачи
   Шаг 1: представление записей
   Списки
   Словари
   Шаг 2: сохранение записей на длительное время
   Текстовые файлы
   Модуль pickle
   Работа модуля pickle с отдельными записями
   Модуль shelve
   Шаг 3: переход к ООП
   Использование классов
   Добавляем поведение
   Добавляем наследование
   Реструктуризация программного кода
   Добавляем возможность сохранения
   Другие разновидности баз данных
   Шаг 4: добавляем интерфейс командной строки
   Шаг 5: добавляем графический интерфейс
   Основы графических интерфейсов
   ООП при разработке графических интерфейсов
   Получение ввода от пользователя
   Графический интерфейс к хранилищу
   Шаг 6: добавляем вебинтерфейс
   Основы CGI
   Запуск вебсервера
   Использование строки запроса и модуля urllib
   Форматирование текста ответа
   Вебинтерфейс к хранилищу с данными
   Конец демонстрационного примера
   Часть II. Системное программирование
   Глава 2. Системные инструменты
   "os.path  дорога к знанию" 
   Зачем здесь нужен Python?
   В следующих пяти главах
   Знакомство с разработкой системных сценариев
   Системные модули Python 
   Источники документации по модулям
   Постраничный вывод строк документации
   Сценарий постраничного вывода
   Основы использования строковых методов
   Другие особенности строк в Python 3.X: Юникод и тип bytes
   Основы операций с файлами 
   Два способа использования программ 
   Руководства по библиотекам Python
   Коммерческие справочники
   Модуль sys 
   Платформы и версии 
   Путь поиска модулей 
   Таблица загруженных модулей 
   Сведения об исключениях 
   Другие элементы, экспортируемые модулем sys 
   Модуль os
   Инструменты в модуле os
   Средства администрирования
   Константы переносимости
   Основные инструменты os.path 
   Выполнение команд оболочки из сценариев
   Другие элементы, экспортируемые модулем os 
   Глава 3. Контекст выполнения сценариев
   "Ваши аргументы, пожалуйста!"
   Текущий рабочий каталог 
   Текущий рабочий каталог, файлы и путь поиска модулей
   Текущий рабочий каталог и командные строки 
   Аргументы командной строки
   Анализ аргументов командной строки
   Переменные окружения оболочки
   Получение значений переменных оболочки
   Изменение переменных оболочки 
   Особенности переменных оболочки: родители, putenv и getenv
   Стандартные потоки вводавывода 
   Перенаправление потоков вводавывода в файлы и программы 
   Перенаправление потоков и взаимодействие с пользователем 
   Перенаправление потоков в объекты Python
   Вспомогательные классы io.StringIO и io.BytesIO
   Перехват потока stderr
   Возможность перенаправления с помощью функции print
   Другие варианты перенаправления: еще раз об os.popen и subprocess
   Глава 4. Инструменты для работы с файлами и каталогами
   "Как очистить свой жесткий диск за пять простых шагов"
   Инструменты для работы с файлами 
   Модель объекта файла в Python 3.X
   Использование встроенных объектов файлов
   Двоичные и текстовые файлы
   Низкоуровневые инструменты в модуле os для работы с файлами
   Сканеры файлов
   Инструменты для работы с каталогами
   Обход одного каталога
   Обход деревьев каталогов
   Обработка имен файлов в Юникоде в версии 3.X: listdir, walk, glob
   Глава 5. Системные инструменты параллельного выполнения 
   "Расскажите обезьянам, что им делать" 
   Ветвление процессов
   Комбинация fork/exec
   Потоки выполнения
   Модуль _thread
   Модуль threading
   Модуль queue
   Графические интерфейсы и потоки выполнения: 
   предварительное знакомство
   Подробнее о глобальной блокировке интерпретатора (GIL)
   Завершение программ
   Завершение программ средствами модуля sys
   Завершение программ средствами модуля os
   Коды завершения команд оболочки
   Код завершения процесса и совместно используемая информация
   Код завершения потока и совместно используемая информация
   Взаимодействия между процессами
   Анонимные каналы
   Именованные каналы (fifo)
   Сокеты: первый взгляд
   Сигналы
   Пакет multiprocessing
   Зачем нужен пакет multiprocessing?
   Основы: процессы и блокировки
   Инструменты IPC: каналы, разделяемая память и очереди
   Запуск независимых программ
   И многое другое
   Зачем нужен пакет multiprocessing? Заключение
   Другие способы запуска программ
   Семейство функций os.spawn
   Функция os.startfile в Windows
   Переносимый модуль запуска программ
   Другие системные инструменты
   Глава 6. Законченные системные программы
   "Ярость поиска"
   Игра: "Найди самый большой файл Python"
   Сканирование каталога стандартной библиотеки
   Сканирование дерева каталогов стандартной библиотеки
   Сканирование пути поиска модулей
   Сканирование всего компьютера
   Вывод имен файлов с символами Юникода
   Разрезание и объединение файлов
   Разрезание файлов переносимым способом
   Соединение файлов переносимым образом
   Варианты использования
   Создание вебстраниц для переадресации
   Файл шаблона страницы
   Сценарий генератора страниц
   Сценарий регрессивного тестирования
   Запускаем тестирование
   Копирование деревьев каталогов
   Сравнение деревьев каталогов
   Поиск расхождений между каталогами
   Поиск различий между деревьями
   Запускаем сценарий
   Проверка резервных копий
   Отчет о различиях и другие идеи
   Поиск в деревьях каталогов
   grep, glob и find
   Создание собственного модуля find
   Удаление файлов с байткодом
   Visitor: обход каталогов "++"
   Редактирование файлов в деревьях каталогов (Visitor)
   Глобальная замена в деревьях каталогов (Visitor) 
   Подсчет строк исходного программного кода (Visitor)
   Копирование деревьев каталогов с помощью классов (Visitor)
   Другие примеры обходчиков (внешние)
   Проигрывание медиафайлов
   Модуль webbrowser
   Модуль mimetypes
   Запускаем сценарий
   Автоматизированный запуск программ (внешние примеры)
   Часть III. Программирование графических интерфейсов
   Глава 7. Графические интерфейсы пользователя
   "Я здесь, я смотрю на тебя, детка"
   Темы программирования GUI
   Запуск примеров
   Различные возможности создания GUI в Python
   Обзор tkinter
   Практические преимущества tkinter 
   Документация tkinter
   Расширения для tkinter
   Структура tkinter
   Взбираясь по кривой обучения программированию графических интерфейсов
   "Hello World" в четыре строки (или меньше)
   Основы использования tkinter
   Создание виджетов
   Менеджеры компоновки
   Запуск программ с графическим интерфейсом
   Альтернативные приемы использования tkinter
   Основы изменения размеров виджетов
   Настройка параметров графического элемента и заголовка окна
   Еще одна версия в память о былых временах
   Добавление виджетов без их сохранения
   Добавление кнопок и обработчиков
   Еще раз об изменении размеров виджетов: растягивание
   Добавление пользовательских обработчиков
   lambdaвыражения как обработчики событий
   Отложенные вызовы с применением инструкций lambda и ссылок на объекты
   Проблемы с областями видимости обработчиков
   Связанные методы как обработчики событий
   Объекты вызываемых классов как обработчики событий
   Другие протоколы обратного вызова в tkinter
   Связывание событий
   Добавление нескольких виджетов
   Еще раз об изменении размеров: обрезание
   Прикрепление виджетов к фреймам
   Порядок компоновки и прикрепление к сторонам
   Снова о параметрах expand и fill компоновки
   Использование якорей вместо растягивания
   Настройка виджетов с помощью классов
   Стандартизация поведения и внешнего вида
   Повторно используемые компоненты и классы
   Прикрепление классов компонентов
   Расширение классов компонентов
   Автономные классыконтейнеры
   Завершение начального обучения
   Соответствие между Python/tkinter и Tcl/Tk
   Глава 8. Экскурсия по tkinter, часть 1
   "Виджеты, гаджеты, графические интерфейсы… Бог мой!"
   Темы этой главы
   Настройка внешнего вида виджетов
   Окна верхнего уровня
   Виджеты Toplevel и Tk
   Протоколы окна верхнего уровня
   Диалоги
   Стандартные (типичные) диалоги
   Модуль диалогов в старом стиле
   Пользовательские диалоги
   Привязка событий
   Другие события, доступные с помощью метода bind
   Виджеты Message и Entry
   Message
   Entry
   Компоновка элементов ввода в формах
   "Переменные" tkinter и альтернативные способы компоновки форм
   Флажки, переключатели и ползунки
   Флажки
   Переключатели
   Ползунки
   Три способа использования графических интерфейсов
   Прикрепление к фреймам
   Независимые окна
   Запуск программ
   Изображения
   Развлечения с кнопками и картинками
   Отображение и обработка изображений с помощью PIL
   Основы PIL
   Отображение других типов графических изображений с помощью PIL
   Отображение всех изображений в каталоге
   Создание миниатюр изображений с помощью пакета PIL
   Глава 9. Экскурсия по tkinter, часть 2
   "Меню дня: Spam, Spam и еще раз Spam"
   Меню
   Меню окон верхнего уровня
   Меню на основе виджетов Frame и Menubutton
   Окна с меню и панелью инструментов
   Виджеты Listbox и Scrollbar
   Программирование виджетов списков
   Программирование полос прокрутки
   Компоновка полос прокрутки
   Виджет Text
   Программирование виджета Text
   Операции редактирования текста
   Юникод и виджет Text
   Более сложные операции с текстом и тегами
   Виджет Canvas
   Базовые операции с виджетом Canvas
   Программирование виджета Canvas
   Прокрутка холстов
   Холсты с поддержкой прокрутки и миниатюр изображений
   События холстов
   Сетки
   В чем преимущества размещения по сетке? 
   Основы работы с сеткой: еще раз о формах ввода
   Сравнение методов grid и pack
   Сочетание grid и pack
   Реализация возможности растягивания виджетов, размещаемых по сетке
   Создание крупных таблиц с помощью grid
   Инструменты синхронизации, потоки выполнения и анимация
   Использование потоков выполнения в графических интерфейсах tkinter
   Использование метода after
   Простые приемы воспроизведения анимации
   Другие темы, связанные с анимацией
   Конец экскурсии
   Другие виджеты и их параметры
   Глава 10. Приемы программирования графических интерфейсов
   "Создание улучшенной мышеловки"
   GuiMixin: универсальные подмешиваемые классы
   Функции создания виджетов
   Вспомогательные подмешиваемые классы
   GuiMaker: автоматизация создания меню и панелей инструментов
   Протоколы подклассов
   Классы GuiMaker
   Программный код самотестирования GuiMaker
   BigGui: клиентская демонстрационная программа
   ShellGui: графические интерфейсы к инструментам командной строки
   Обобщенный графический интерфейс инструментов оболочки
   Классы наборов утилит
   Добавление графических интерфейсов к инструментам командной строки
   GuiStreams: перенаправление потоков данных в виджеты
   Использование перенаправления для сценариев архивирования
   Динамическая перезагрузка  обработчиков
   Обертывание интерфейсов окон верхнего уровня
   Графические интерфейсы, потоки выполнения и очереди
   Помещение данных в очередь
   Помещение обработчиков в очередь
   Другие способы добавления GUI к сценариям командной строки
   Вывод окон графического интерфейса по требованию
   Реализация графического интерфейса в виде отдельной программы: сокеты (вторая встреча) 
   Реализация графического интерфейса в виде отдельной программы: каналы
   Запускающие программы PyDemos и PyGadgets
   Панель запуска PyDemos
   Панель запуска PyGadgets
   Глава 11. Примеры законченных программ с графическим интерфейсом
   "Python, открытое программное обеспечение и Camaro"
   Примеры в других главах
   Стратегия данной главы
   PyEdit: программа/объект текстового редактора
   Запуск PyEdit
   Изменения в версии PyEdit 2.0 (третье издание)
   Изменения в версии PyEdit 2.1 (четвертое издание) 
   Исходный программный код PyEdit
   PyPhoto: программа просмотра и изменения размеров изображений
   Запуск PyPhoto
   Исходный программный код PyPhoto
   PyView: слайдшоу для изображений и примечаний
   Запуск PyView
   Исходный программный код PyView
   PyDraw: рисование и перемещение графики
   Запуск PyDraw
   Исходный программный код PyDraw
   PyClock: виджет аналоговых/цифровых часов
   Краткий урок геометрии
   Запуск PyClock
   Исходный программный код PyClock
   PyToe: виджет игры в крестикинолики
   Запуск PyToe
   Исходный программный код PyToe (внешний) 
   Что дальше
   Алфавитный указатель
                                                            
                                                       
                                                        
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                 