Как распечатать разные результаты на экране и в файле в Python?
Я заметил, что httpie
Инструмент Python дает разные результаты в следующих двух случаях:
$ http google.com
$ 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!"