我运行了这个命令:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
Run Code Online (Sandbox Code Playgroud)
将数据转储到partyapp_dump.json文件中。但所有数据都只是打印在屏幕上,并partyapp_dump.json创建了一个空文件。
为什么会发生这种情况?我测试过ls > partyapp_dump.json,效果很好。
Cal*_*leb 22
您的 Python 应用程序必须将其输出写入 STDERR 输出通道,而不是普通的 STDOUT。使用 shell 结构>只捕获和重定向写入输出通道的数据,但实际上还有几个其他通道可以打印,最常见的是第二个,通常用于错误。
您也可以尝试捕获 STDERR(第二通道),如下所示:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2>&1
Run Code Online (Sandbox Code Playgroud)
该2>&1构造将错误的输出流连接到正常输出通道。程序生成您想要在错误通道上捕获的输出是不寻常的;通常,这将保留用于调试信息而不是应用程序数据。请谨慎使用此脚本,因为它以非标准方式运行。
您还可以将输出和错误通道转储到不同的文件,如下所示:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2> error_output.txt
Run Code Online (Sandbox Code Playgroud)