Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Прочие серверы NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Full-Text Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Глава 9. Распутываем Всемирную паутину . . . . . . . . . . . . . . . . . . . . 257
Веб-клиенты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Тестируем с telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Стандартные веб-библиотеки Python . . . . . . . . . . . . . . . . . . . . . . . . 260
За пределами стандартной библиотеки: requests . . . . . . . . . . . . . . . 262
Веб-серверы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Простейший веб-сервер Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Web Server Gateway Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Фреймворки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Bottle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Веб-серверы, не использующие Python . . . . . . . . . . . . . . . . . . . . . . 272
Другие фреймворки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Веб-сервисы и автоматизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Модуль webbrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
API для Сети и Representational State Transfer . . . . . . . . . . . . . . . . . . 277
JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Поиск и выборка данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Получаем HTML-код с помощью BeautifulSoup . . . . . . . . . . . . . . . . . 278
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Оглавление
15
Глава 10. Системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Создаем файл с помощью функции open() . . . . . . . . . . . . . . . . . . . . 281
Проверяем существование файла с помощью функции
exists() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Проверяем тип с помощью функции isfile() . . . . . . . . . . . . . . . . . . . 282
Копируем файлы с помощью функции copy() . . . . . . . . . . . . . . . . . . 283
Изменяем имена файлов с помощью функции rename() . . . . . . . . . . 283
Создаем ссылки с помощью link() или symlink() . . . . . . . . . . . . . . . . 283
Изменяем разрешения с помощью функции chmod() . . . . . . . . . . . . 284
Изменение владельца файла с помощью функции chown() . . . . . . . . 284
Получаем pathname с помощью функции abspath() . . . . . . . . . . . . . 285
Получаем символьную ссылку с помощью функции
realpath() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Удаляем файл с помощью функции remove() . . . . . . . . . . . . . . . . . . 285
Каталоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Создаем каталог с помощью функции mkdir() . . . . . . . . . . . . . . . . . 285
Удаляем каталог с помощью функции rmdir() . . . . . . . . . . . . . . . . . . 286
Выводим на экран содержимое каталога с помощью
функции listdir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Изменяем текущий каталог с помощью функции
chdir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Перечисляем совпадающие файлы с помощью функции