У меня есть питон скрипт (назовем его my_python_script.py
), который печатает несколько сообщений с помощьюПочему stderr в subprocess.check_call получает потоки stderr и stdout?
print message_string
Он также выводит процент прогресса с использованием
sys.stdout.write(progress_string)
Когда это будет сделано, он выводит некоторую статистику и потому, что я потом хочу собрать тех, кто в файле с помощью stderr
, я использую
sys.stderr.write(stats_string)
Теперь, в другом сценарии я называю A Бова скрипт с subprocess.check_call()
как этого
file_obj = open('stats.log', 'a')
check_call(['my_python_script.py'], stderr=file_obj)
file_obj.close()
К моему удивлению, file_obj
содержит каждый выход из my_python_script.py
включая print
выход, sys.stdout.write
выхода и sys.stderr.write
выхода. Я ожидал, что он будет содержать только результат от sys.stderr.write
.
Почему это не так? check_call
перенаправляет stderr
на stdout
по умолчанию?
Если есть легкое исправление, я был бы счастливым туристом. Благодарю.
Кстати, я использую Python 2.7 для Linux Fedora.
Если у вас есть сценарий print 'sys.stdout.fileno()' и 'sys.stderr.fileno()' они выглядят одинаково? –