Как распечатать разные результаты на экране и в файле в Python?

Я заметил, что httpie Инструмент Python дает разные результаты в следующих двух случаях:

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

Файл out.txt пропускает заголовки, которые присутствуют в первом случае.

2 ответа

Решение

На странице руководства 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`

(Но также обратите внимание, что симпатичная печать ведет себя по-разному при перенаправлении.)

Использование sys.stdout.isatty сказать ли stdout является терминалом ("tty") или файлом и выводит различный вывод в зависимости от этого, например:

import sys
if sys.stdout.isatty():
    print "Hello terminal!"
else:
    print "Hello non-terminal!"
Другие вопросы по тегам