все Python 3до 3.13Удалено из стандартной библиотекипонятие
pipes
удалённые модули
Конвейеры команд оболочки и экранирование аргументов. Удалён в Python 3.13 — используйте subprocess и shlex.quote.
Синтаксис
import pipes # до 3.13
pipes.Template собирал конвейер вида 'tr a-z A-Z | sort' и прогонял через него файл, а недокументированная pipes.quote() экранировала аргумент для оболочки — её и копировали из старых ответов чаще всего. Убран по PEP 594: subprocess делает то же надёжнее. Как переписать: pipes.quote меняется на shlex.quote один в один, собрать строку команды из списка помогает shlex.join(). Конвейер лучше вовсе не отдавать оболочке: subprocess.run([...], input=..., capture_output=True, text=True) запускает программу без shell и передаёт данные через stdin, а цепочку из нескольких программ связывают несколько вызовов subprocess.Popen с stdout=PIPE. Пакет standard-pipes на PyPI возвращает модуль.
Примеры
# Python 3.13+
try:
import pipes
except ModuleNotFoundError as e:
print(type(e).__name__) # → ModuleNotFoundError
# Python 3.13+
import shlex, subprocess, sys
print(shlex.quote('my file.txt')) # → 'my file.txt'
done = subprocess.run([sys.executable, '-c', 'print(input().upper())'],
input='hi', capture_output=True, text=True)
print(done.stdout.strip()) # → HI
import pipes
print(pipes.quote('my file.txt')) # → 'my file.txt'
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности