Простой Python. Современный стиль программирования (Любанович) - страница 168

>>>> import os

>>>> os.chdir('poems')

>>>> os.listdir('.')

>['mcintyre']

Перечисляем совпадающие файлы с помощью функции glob()

Функция glob() ищет совпадающие имена файлов или каталогов с помощью правил оболочки системы Unix, а не более полного синтаксиса регулярных выражений. Эти правила выглядят так:

• * — совпадает со всем (в регулярных выражениях аналогом этого правила является.*);

•? — совпадает с одним символом;

• [abc] — совпадает с символами a, b или c;

• [!abc] — совпадает со всеми символами, кроме a, b или c.

Получим все файлы и каталоги, имена которых начинаются с буквы m:

>>>> import glob

>>>> glob.glob('m*')

>['mcintyre']

Как насчет файлов и каталогов с именами, состоящими из двух символов?

>>>> glob.glob('??')

>[]

Я думаю о слове из восьми букв, которое начинается с m и заканчивается на e:

>>>> glob.glob('m??????e')

>['mcintyre']

Как насчет чего-то, что начинается с букв k, l или m и заканчивается на букву e?

>>>> glob.glob('[klm]*e')

>['mcintyre']

Программы и процессы

Когда вы запускаете отдельную программу, ваша операционная система создает один процесс. Он использует системные ресурсы (центральный процессор, память, место на диске) и структуры данных в ядре операционной системы (файлы и сетевые соединения, статистика использования и т. д.). Процесс изолирован от других процессов — он не может видеть, что делают другие процессы, или мешать им.

Операционная система отслеживает все запущенные процессы, давая каждому из них немного времени, а затем переключаясь на другие, для того чтобы справедливо распределять работу и реагировать на действия пользователя. Вы можете увидеть состояние своих процессов с помощью графического интерфейса вроде Mac’s Activity Monitor (OS X) или Диспетчера задач в Windows.

Вы также можете получать данные о процессах собственных программ. Модуль стандартной библиотеки os помогает получить некоторую системную информацию. Например, следующие функции позволяют получить идентификатор процесса и текущую рабочую папку запущенного интерпретатора Python:

>>>> import os

>>>> os.getpid()

>76051

>>>> os.getcwd()

>'/Users/williamlubanovic'

А эти — мои идентификаторы пользователя и группы:

>>>> os.getuid()

>501

>>>> os.getgid()

>20

Создаем процесс с помощью модуля subprocess

Все программы, с которыми вы сталкивались до этого момента, представляли собой отдельные процессы. Вы можете запускать и останавливать остальные существующие программы с помощью Python, используя модуль subprocess. Если вы хотите просто запустить другую программу в оболочке и получить результат ее работы (стандартный отчет о работе и отчет об ошибках), используйте функцию getoutput(). В этом примере мы получим результат работы программы date системы Unix: