pipes — Інтерфейс до конвеєрів оболонки

Вихідний код: Lib/pipes.py

Застаріло починаючи з версії 3.11: Модуль pipes є застарілим (докладніше див. PEP 594). Натомість використовуйте модуль subprocess.


Модуль pipes визначає клас для абстрагування концепції конвеєра — послідовності конвертерів з одного файлу в інший.

Оскільки модуль використовує командні рядки /bin/sh, потрібна POSIX або сумісна оболонка для os.system() і os.popen().

Модуль pipes визначає такий клас:

class pipes.Template

Абстракція трубопроводу.

Приклад:

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

Об’єкти шаблону

Об’єкти шаблону наступні методи:

Template.reset()

Відновлення шаблону конвеєра до початкового стану.

Template.clone()

Поверніть новий еквівалентний шаблон конвеєра.

Template.debug(flag)

Якщо flag має значення true, увімкніть налагодження. В іншому випадку вимкніть налагодження. Коли налагодження ввімкнено, команди, які потрібно виконати, друкуються, а оболонкі надається команда set -x, щоб бути більш детальною.

Template.append(cmd, kind)

Додайте нову дію в кінці. Змінна cmd має бути дійсною командою оболонки bourne. Змінна kind складається з двох літер.

Першою літерою може бути '-' (що означає, що команда читає стандартний ввід), 'f' (що означає, що команда читає заданий файл у командному рядку) або ' .'' (це означає, що команди не читають введених даних, а отже, мають бути першими.)

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

Template.prepend(cmd, kind)

Додайте нову дію на початку. Перегляньте append() для пояснення аргументів.

Template.open(file, mode)

Повертає файлоподібний об’єкт, відкритий у file, але зчитований або записаний конвеєром. Зауважте, що можна вказати лише одне з 'r', 'w'.

Template.copy(infile, outfile)

Скопіюйте infile до outfile через канал.