pipes — Интерфейс к командным конвейерам оболочки
Исходный код: Lib/pipes.py
Модуль pipes определяет класс для абстрагирования понятия конвейера — последовательности преобразователей из одного файла в другой.
Поскольку модуль использует командные строки /bin/sh, требуется оболочка POSIX или совместимая с ней для os.system() и os.popen().
-
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'
-
pipes.quote(s) -
Устарело начиная с версии 2.7: До Python 2.7 эта функция не была публично документирована. Она наконец-то была публично экспонирована в Python 3.3 как функция
quoteв модулеshlex.Возвращает экранированную для оболочки версию строки s. Возвращаемое значение — строка, которая может безопасно использоваться в качестве одного токена в командной строке оболочки, в случаях, когда вы не можете использовать список.
Этот идиом был бы небезопасным:
>>> filename = 'somefile; rm -rf ~' >>> command = 'ls -l {}'.format(filename) >>> print command # executed by a shell: boom! ls -l somefile; rm -rf ~quote()позволяет устранить брешь в безопасности:>>> command = 'ls -l {}'.format(quote(filename)) >>> print command ls -l 'somefile; rm -rf ~' >>> remote_command = 'ssh home {}'.format(quote(command)) >>> print remote_command ssh home 'ls -l '"'"'somefile; rm -rf ~'"'"''Экранирование совместимо с оболочками UNIX и с
shlex.split():>>> remote_command = shlex.split(remote_command) >>> remote_command ['ssh', 'home', "ls -l 'somefile; rm -rf ~'"] >>> command = shlex.split(remote_command[-1]) >>> command ['ls', '-l', 'somefile; rm -rf ~']
1. Объекты шаблона
Объекты шаблона поддерживают следующие методы:
-
Template.reset() -
Восстанавливает шаблон конвейера до его начального состояния.
-
Template.clone() -
Возвращает новый, эквивалентный шаблон конвейера.
-
Template.debug(flag) -
Если flag истинно, включить отладку. В противном случае, отключить отладку. При включенной отладке выполняемые команды выводятся на экран, и оболочке дается
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 через конвейер.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/pipes.html