我注意到httpie
python工具在以下两个场景中给出了不同的结果:
$ http google.com
$ http google.com > out.txt
文件out.txt
遗漏了第一种情况下存在的头。
使用sys.stdout.isatty
判断stdout
是终端("tty")还是文件,并根据具体情况打印不同的输出,例如:
import sys
if sys.stdout.isatty():
print "Hello terminal!"
else:
print "Hello non-terminal!"
在http
的手册页面上,您可以找到以下
Output options:
--print WHAT, -p WHAT
String specifying what the output should contain:
'H' request headers 'B' request body 'h' response headers 'b' response body
The default behaviour is 'hb' (i.e., the response headers and body is
printed), if standard output is not redirected. If the output is piped
to another program or to a file, then only the response body is printed by
default.
这表明无论何时重定向输出,http
都有意表现出不同的行为。要获得与未重定向输出相同的行为,可以使用
`http --print hb google.com > out.txt`
(但也要注意,漂亮的打印在重定向时表现不同。)