Как удалить строки из stdout в Python - в SciTe, Idle, Eclipse или другом редакторе с консолью - PullRequest
1 голос
/ 24 июля 2011

Для стандартного окна консоли Python вы можете удалить последнюю строку, например, sys.stdout.write('\r'+' '*len(line)), как я объяснил здесь .

Но для таких редакторов, как SciTe, Idle или Eclipse (сPyDev), stdout является объектом файлового типа, который, вероятно, сбрасывает свое содержимое в консольное окно, оставляя свой буфер пустым и, таким образом, не позволяет изменять содержимое, как только оно появилось в окне.Какой прием можно применить, например, для удаления последней строки такой консоли?Есть ли один универсальный способ сделать это, генерируя тот же результат, если скрипт запускается вне редактора, записывающего в стандартное окно консоли Python?

edit: Тип проверки (os.sys.stdout) показывает:

  • SciTe: <type 'file'>
  • В режиме ожидания: <class 'idlelib.rpc.RPCProxy'>
  • Затмение: <type 'file'>
  • Окно Python Console: <type 'file'>

В стандартном stdout консоли python результат stdout.write('\r') of отличается от консолей SciTe и Eclipse, поэтому type stdoutне определяет его реализацию.

edit: только что увидел java людей, имеющих похожую проблему и сообщил как ошибку ...

1 Ответ

1 голос
/ 30 августа 2011

Я пришел к выводу, что это невозможно, пожалуйста, исправьте меня, если я ошибаюсь.

Окно консоли Python (терминал) не «сбрасывает» записанную строку, пока не будет пройдена следующая строка,как будто он сохраняет возврат каретки как '\ n' в памяти, который можно игнорировать при записи ('\ r).Другие, более консольные окна на основе графического интерфейса (IDE), очевидно, реализованы по-другому.Поэтому, возможно, это может быть запрос функции интерпретировать '\ r', чтобы стереть предыдущую строку в этих консолях, чтобы все консоли имели, по крайней мере, общее поведение со стандартной консолью, возможно только с дополнительными опциями.

Тем временем для меня, как для пользователя, могло бы быть решение изменить sys.stdout на новое консольное окно, которое ставилось перед , но отвечало неудовлетворительно ...это?

Или использовать что-то вроде модуля curses , но не для Windows (есть «curses.py» для Windows?), например, Console.py ,

...