Мне нравится 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
, это по-настоящему удобная и простая библиотека!