Я компилирую команду для выполнения в системе unix из python, содержащую несколько шагов конвейера. например.:
grep foo myfile | cmd1 | cmd2 > output
Они соответствуют ряду преобразований записей, в которых есть foo
из myfile
. Иногда я создаю его как команду, которую должен выполнить os.system
, а в других случаях использую модуль subprocess
.
Как я могу выполнить проверку ошибок в каждой части канала из Python? Например в 99% случаев foo
записей в myfile
а остальные пайпы работают. Но если по какой-то причине myfile
существует, но не содержит записей foo
, то остальная часть конвейера разрывается, потому что вы передаете пустые файлы, а оставшиеся команды требуют для работы непустых входных данных. Это затрудняет отладку, потому что все, что вы видите, это вывод сломанной трубы, не зная, какой промежуточный шаг не удался.
Есть ли способ построить каналы в Python, которые проверяют ошибки на промежуточных этапах? Например. проверить, что часть канала grep
действительно содержит некоторый вывод, что вывод cmd1
на вводе grep
также содержит некоторый вывод и так далее? Спасибо.
subprocess
. Я не могу переписать все команды, которые я вызываю в Python - person   schedule 17.12.2012