2016-07-13 8 views
-1

Я знал, что с -u буфер stdout python будет отключен. Он работает в возвышенном и bash, но в pycharm, я установил Run->Edit Configurations->Interpreter options->add -u, это не так. Мой тестовый код выглядит следующим образом:Как отключить буфер stdout python в pycharm?

# -*- encoding: utf-8 -*- 
import sys 
print "stdout1" 
print >> sys.stderr, "stderr1" 
print "stdout2" 
print >> sys.stderr, "stderr2" 
print "stdout3" 
print >> sys.stderr, "stderr3" 

Вот результат в окне «Выполнить»:

C:\Python27\python.exe -u "D:/Python Projects/compute - 2016.7.13/main.py" 
stderr1 
stderr2 
stderr3 
stdout1 
stdout2 
stdout3 

Process finished with exit code 0 

Результаты всегда меняются, кажется, что «-u» не работает

+0

@AkshatMahajan Мой python равен 2,7.12, а >> означает перенаправление вывода – Ryan

ответ

1

Я думаю, что проблема не связана с буферизацией на основе python: если вы запустите свой пример в консоли, порядок будет правильным. IDE обрабатывает выходные данные процесса скрипта и должен улавливать как stdout, так и stderr, но невозможно сохранить порядок, когда оба потока перехватываются. Вот некоторые актуальные обсуждения: one, two, three.