如何在屏幕上和python中的文件中打印不同的结果?

时间:2013-12-17 12:52:31

标签: python bash httpie

我注意到httpie python工具在以下两个caes中给出了不同的结果:

  1. $ http google.com
  2. $ http google.com > out.txt
  3. 文件out.txt错过了第一种情况中出现的标题。

2 个答案:

答案 0 :(得分:2)

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

import sys
if sys.stdout.isatty():
    print "Hello terminal!"
else:
    print "Hello non-terminal!"

答案 1 :(得分: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`

(但另请注意,漂亮打印在重定向方面表现不同。)