我运行这个命令:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
将数据转储到partyapp_dump.json
文件中。 但所有的数据只是打印在屏幕上,并创build一个空的partyapp_dump.json
文件。
为什么会发生? 我testing了ls > partyapp_dump.json
,并且工作完美。
用>你只能redirect标准输出。 尝试2>而不是redirect错误输出。 使用&>redirect两者。
您的Python应用程序必须将其输出写入STDERR输出通道,而不是正常的STDOUT。 使用shell构造>
仅捕获并redirect写入输出通道的数据,但实际上还有其他几个可以打印的通道,最常见的是第二个,通常用于出错。
你可以试试陷阱STDERR(第二频道),就像这样:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2>&1
2>&1
构造将错误的输出stream连接到正常输出通道。 一个程序生成你想要在错误通道上捕获的输出是很不寻常的; 通常这会保留给debugging信息而不是应用程序数据。 请谨慎使用此脚本,因为它以非标准方式运行。
您也可以将输出和错误通道转储到不同的文件,如下所示:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 2> error_output.txt
除了已经build议的stderr和stdout输出的解释之外,你的应用程序可能会简单地忽略这两个stream,并为其输出显式地打开“/ dev / tty”。
如果设置了noclobber
bash选项,那么如果目标文件已经存在,>redirect将失败(尽pipe不会静默)。
为了更好的可移植性,使用cmd >| file
cmd >| file
强制覆盖任何现有的文件。
如果你迷路了,你总是可以试着用strace来运行它,看看有什么过程在做:
strace -f command