18 июля 2012 г.

Перенаправляем потоки в pbs

Мне нравится pbs. Эта библиотека с лихвой заменяет мне необходимость программировать всякие мелкие штуки на чистом bash'е. Однако до сегодня я не особо понимал как реализовать перенаправление потоков. И вот я наконец-то понял, о чем с вами и поделюсь :)

Итак, предположим, что нам неодходимо эмулировать следующую конструкцию:

$ git archive HEAD --format=zip --prefix=project/ > ../project.zip

В pbs это будет выглядеть как-то так:

handler = open('../project.zip', 'wb+')
pbs.git('archive', 'HEAD', format='zip', prefix='project', _out=handler)
handler.close()

Также просто будет перенаправить stderr в необходимый нам файл, например:

$ stat does_not_exist.txt 2> error_log
handler = open('error_log', 'wb+')
try:
    pbs.stat('does_not_exist.txt', _err=handler)
except pbs.ErrorReturnCode:
    pass
handler.close()

Вот такие пироги! Пользуйтесь pbs, это по-настоящему удобная и простая библиотека!

blog comments powered by Disqus