В этой части книги мы начнем свое путешествие по программированию на языке Python с исследования области системных приложений - сценариев, работающих с файлами, программами и окружением программ в целом. Хотя примеры из этой области сфокусированы на определенном типе задач, используемые в них приемы окажутся полезными и в последующих частях книги. Иными словами, если вы еще не эксперт по системному программированию на Python, вам следует пускаться в путь именно с этого места.
Зачем здесь нужен Python?
Системные интерфейсы Python обслуживают области приложений, но в последующих пяти главах большинство примеров будет относиться к категории системных инструментов - программ, иногда называемых утилитами командной строки, сценариями командной оболочки, программами системного администрирования, системными программами и другими сочетаниями этих слов. Независимо от того, знакомы
ли вам эти названия, вы, вероятно, уже знакомы со сценариями этого типа: они выполняют такие задачи, как обработка файлов в каталоге, запуск тестовых сценариев и тому подобное. Исторически такие программы писались на непереносимых и синтаксически неочевидных языках оболочек, таких как командные файлы DOS, csh и awk.
Однако даже в этой относительно простой области ярко проявляются лучшие свойства Python. Например, простота использования Python и обширное многообразие встроенных библиотек упрощают (и даже делают приятным) использование развитых системных инструментов, таких как потоки выполнения, сигналы, ветвление процессов, сокеты и аналогичные им; такие инструменты намного сложнее использовать в неясном синтаксисе языков оболочек и в многоэтапных циклах разработки на компилируемых языках. Поддержка в Python таких идей, как ясность программного кода и объектно-ориентированное программирование, способствует созданию таких инструментов оболочки, которые можно читать, сопровождать и повторно использовать. При использовании Python нет необходимости начинать с нуля каждый новый сценарий.
Более того, мы обнаружим, что в Python не только есть все интерфейсы, необходимые для разработки системных инструментов, но он также обеспечивает переносимость сценариев. При использовании стандартной библиотеки Python большинство системных сценариев, написанных на языке Python, автоматически становятся переносимыми на все основные платформы. Например, сценарий для обработки каталогов, написанный под Windows, обычно может выполняться и под Linux безо всякой правки исходных текстов: достаточно просто скопировать сценарий. Для разработки сценариев, обеспечивающих такой уровень переносимости, необходимо прикладывать некоторые усилия, тем не менее при разумном использовании Python может стать единственным средством, которым необходимо владеть для создания системных сценариев.
В следующих пяти главах
Чтобы упростить изучение этой части книги, я поделил ее на пять глав:
• В этой главе я познакомлю вас с основными системными модулями в виде краткого обзора. Здесь мы впервые встретим некоторые из наиболее часто используемых системных инструментов.
• В главе 3 мы продолжим исследование основных системных интерфейсов - изучением их роли в терминах системного программирования, таких как потоки ввода-вывода, аргументы командной строки, переменные окружения и так далее.
• В главе 4 мы сосредоточимся на изучении инструментов Python для работы с файлами, каталогами и деревьями каталогов.
• В главе 5 мы перейдем к изучению стандартных инструментов Python для реализации параллельной обработки данных - процессов, потоков выполнения, очередей, каналов, сигналов и многих других.
• В главе 6, завершающей эту часть книги, будет представлена коллекция законченных системных программ. Здесь приводятся более крупные примеры, имеющие практическую ценность; в них для решения практических задач используются инструменты, представленные в четырех предыдущих главах. В состав этой коллекции входят не только универсальные системные сценарии, но и сценарии для обработки каталогов с файлами.