Ваше приложение на Python должно записывать свои выходные данные в выходной канал STDERR вместо обычного STDOUT. Использование конструкции оболочки >
только перехватывает и перенаправляет данные, записанные в выходной канал, но на самом деле существует несколько других каналов, которые могут быть напечатаны, наиболее распространенным из которых является второй, обычно используемый для ошибок.
Вы также можете попробовать отловить STDERR (2-й канал):
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2>&1
2>&1
Конструкция соединяет выходной поток на наличие ошибок в нормальный выходной канал. Для программы необычно генерировать вывод, который вы хотели бы захватить на канале ошибки; обычно это зарезервировано для отладочной информации, а не для данных приложения. Пожалуйста, используйте этот скрипт с некоторой осторожностью, поскольку он ведет себя нестандартным образом.
Вы также можете вывести каналы вывода и ошибок в разные файлы, например так:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2> error_output.txt
&>
будет работать только в Bash 4.0 и iirc последних версиях Zsh. Для более портативного решенияfoo > bar 2&>1
. Ссылка: mywiki.wooledge.org/BashFAQ/014