Ejecuté este comando:
python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json
Para volcar datos en el partyapp_dump.json
archivo. Pero todos los datos solo se imprimen en la pantalla y partyapp_dump.json
se crea un archivo vacío .
¿Por qué pudo pasar esto? Lo probé ls > partyapp_dump.json
y funcionó perfectamente.
&>
solo funcionará en Bash 4.0 e iirc versiones recientes de zsh. Para una solución más portátil,foo > bar 2&>1
. Referencia: mywiki.wooledge.org/BashFAQ/014Su aplicación Python debe estar escribiendo su salida en el canal de salida STDERR en lugar del STDOUT normal. El uso de la construcción de shell
>
solo captura y redirige los datos escritos en el canal de salida, pero en realidad hay varios otros canales en los que se puede imprimir, el más común es el segundo, generalmente utilizado para errores.Puede intentar atrapar STDERR (segundo canal) así:
La
2>&1
construcción conecta el flujo de salida para errores al canal de salida normal. Es inusual que un programa genere resultados que desee capturar en el canal de error; generalmente eso estaría reservado para la información de depuración, no para los datos de la aplicación. Utilice este script con precaución, ya que se comporta de manera no estándar.También puede volcar los canales de salida y error en diferentes archivos como este:
fuente
Además de la explicación de salida stderr vs stdout ya sugerida, su aplicación podría simplemente ignorar ambas secuencias y abrir explícitamente "/ dev / tty" para su salida.
fuente
Si se establece la
noclobber
opción bash, entonces la redirección fallará (aunque no de forma silenciosa) si el archivo de destino ya existe.Para una mejor portabilidad, use
cmd >| file
para forzar la sobrescritura de cualquier archivo existente.fuente
Si está perdido, siempre puede intentar ejecutarlo con strace para ver qué procesos están haciendo:
fuente
strace
.