> **Источник:** https://python-all.ru/3.0/library/pipes.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `pipes` – Интерфейс к конвейерам командной оболочки

*Платформы:* Unix

Модуль `pipes` определяет класс, абстрагирующий понятие *конвейера* – последовательности преобразователей из одного файла в другой.

Поскольку модуль использует командные строки **/bin/sh**, требуется POSIX-совместимая оболочка для [`os.system()`](https://python-all.ru/3.0/library/os.html#os.system) и `os.popen()`.

Модуль `pipes` определяет следующий класс:

#### `[pipes.Template]class pipes.Template`

Абстракция конвейера.

Пример:

```python
>>> import pipes
>>> t=pipes.Template()
>>> t.append('tr a-z A-Z', '--')
>>> f=t.open('/tmp/1', 'w')
>>> f.write('hello world')
>>> f.close()
>>> open('/tmp/1').read()
'HELLO WORLD'
```

## Объекты Template

У объектов Template есть следующие методы:

#### `[pipes.Template.reset]Template.reset()`

Восстанавливает шаблон конвейера в исходное состояние.

#### `[pipes.Template.clone]Template.clone()`

Возвращает новый эквивалентный шаблон конвейера.

#### `[pipes.Template.debug]Template.debug(flag)`

Если

*flag*

истинно, включить отладку. В противном случае выключить. Когда отладка включена, выводится список выполняемых команд, а оболочка получает команду

`set -x`

для более подробного вывода.

#### `[pipes.Template.append]Template.append(cmd, kind)`

Добавляет новое действие в конец. Переменная *cmd* должна быть корректной командой Bourne shell. Переменная *kind* состоит из двух букв.

Первая буква может быть либо `'-'` (что означает, что команда читает свой стандартный ввод), `'f'` (что означает, что команда читает заданный файл из командной строки) или `'.'` (что означает, что команда не читает ввод, и следовательно должна быть первой).

Аналогично, вторая буква может быть либо `'-'` (что означает, что команда пишет в стандартный вывод), `'f'` (что означает, что команда записывает файл в командной строке) или `'.'` (что означает, что команда ничего не записывает, и следовательно должна быть последней).

#### `[pipes.Template.prepend]Template.prepend(cmd, kind)`

Добавляет новое действие в начало. Описание аргументов см. в

[`append()`](https://python-all.ru/3.0/library/pipes.html#pipes.Template.append)

.

#### `[pipes.Template.open]Template.open(file, mode)`

Возвращает файлоподобный объект, открытый для

*file*

, но читаемый или записываемый конвейером. Обратите внимание, что можно указать только одно из значений:

`'r'`

,

`'w'`

.

#### `[pipes.Template.copy]Template.copy(infile, outfile)`

Копирует

*infile*

в

*outfile*

через конвейер.
