我运行了这个命令:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
将数据转储到partyapp_dump.json
文件中。但所有数据都只是打印在屏幕上,并partyapp_dump.json
创建一个空文件。
为什么会发生这种情况?我测试过了ls > partyapp_dump.json
,效果很好。
答案1
和>你只需重定向标准输出。尝试2>而是重定向错误输出。使用&>重定向两者。
答案2
您的 Python 应用程序必须将其输出写入 STDERR 输出通道,而不是正常的 STDOUT。使用 shell 构造>
只会捕获并重定向写入输出通道的数据,但实际上还有其他几个通道可以打印到,最常见的是第二个通道,通常用于错误。
您也可以尝试捕获 STDERR(第二通道),如下所示:
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
答案3
除了已经建议的 stderr 与 stdout 输出解释之外,您的应用程序可能只是忽略这两个流并明确打开“/dev/tty”作为其输出。
答案4
如果你迷路了,你可以尝试用 strace 运行它来查看进程正在做什么:
strace -f command