Я выполнил эту команду:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
Чтобы выгружать данные в partyapp_dump.json
файл. Но все данные просто выводятся на экран и пустой partyapp_dump.json
файл создан.
Почему это могло произойти? Я тестировал ls > partyapp_dump.json
и это сработало отлично.
С участием > вы перенаправляете только стандартный вывод. Пытаться 2> вместо этого, чтобы перенаправить вывод ошибки. Использовать &> чтобы перенаправить оба.
Ваше приложение python должно записывать вывод в выходной канал STDERR вместо обычного STDOUT. Использование конструкции оболочки >
только улавливает и перенаправляет данные, записанные в выходной канал, но на самом деле есть несколько других каналов, которые можно распечатать, наиболее распространенным из которых является второй, обычно используемый для ошибок.
Вы также можете попробовать захватить STDERR (2-й канал) следующим образом:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2>&1
В 2>&1
construct подключает выходной поток для ошибок к нормальному выходному каналу. Для программы необычно генерировать выходные данные, которые вы хотели бы зафиксировать в канале ошибок; обычно это зарезервировано для отладочной информации, а не для данных приложения. пожалуйста используйте этот скрипт с осторожностью так как ведет себя нестандартно.
Вы также можете сбросить выходные данные и каналы ошибок в разные файлы, например:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2> error_output.txt
В дополнение к уже предложенному объяснению вывода stderr vs stdout ваше приложение может просто игнорировать оба этих потока и явно открывать "/ dev / tty" для вывода.
Если noclobber
Если задана опция bash, то> перенаправление не удастся (хотя и не молча), если целевой файл уже существует.
Для лучшей переносимости используйте cmd >| file
для принудительной перезаписи любого существующего файла.
Если вы заблудились, вы всегда можете попробовать запустить его с помощью strace, чтобы посмотреть, что делают процессы:
strace -f command