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



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

  1. $ http google.com
  2. $ 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`

(但也要注意,漂亮的打印在重定向时表现不同。)

相关内容

  • 没有找到相关文章

最新更新