1

我注意到httpiepython 工具在以下两种情况下给出了不同的结果:

  1. $ http google.com
  2. $ http google.com > out.txt

该文件out.txt缺少第一种情况下存在的标头。

4

2 回答 2

2

用于sys.stdout.isatty判断stdout是终端(“tty”)还是文件,并根据它打印不同的输出,例如:

import sys
if sys.stdout.isatty():
    print "Hello terminal!"
else:
    print "Hello non-terminal!"
于 2013-12-17T12:57:08.650 回答
1

在您的手册页上,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`

(但还要注意,漂亮打印的行为与重定向不同。)

于 2013-12-17T13:07:18.763 回答