Я предлагаю использовать bpython-curses
вместо этого, если вам нужно такое поведение, потому что (как вы заметили) стандартный интерфейс bpython не справляется с этим правильно. Вы примерно правы в своем объяснении: bpython записывает вывод в фальшивый sys.stdout, а затем пытается угадать, как его отобразить. Его предположение очень наивно, и хотя оно учитывает ограниченное число escape-последовательностей форматирования терминала, оно не учитывает возврат каретки. Курсор перемещается на строку на терминале, и эта вычисленная строка вывода записывается, в результате чего вы видите.
Неожиданное поведение вывода консоли BPython
336
iago-lito
Я использую BPython для запуска скриптов Python, и я обнаружил, что вывод консоли отличается от обычной консоли Python. Например, этот небольшой фрагмент кода:
import time for i in range(100): time.sleep(.1) print("\r{}".format(i), end="")
Выводы в Python:
99 | >>> |
но выводит в BPython:
26 | 51 | 75 | 99 | >>> | ^ end of the console
Эти явно случайные числа зависят только от ширины моей консоли . Я подозреваю, что курсор BPython будет смещаться вправо при каждом вызове, print
даже если строка начинается с \r
. Когда он достигает правого края консоли, текущая строка больше не может быть удалена, и поэтому начинается новая строка.
Есть ли способ исправить это?
ОБНОВЛЕНИЕ: (сообщается об ошибке там )
1 ответ на вопрос
1
Thomas
Кажется, это то, что мне было нужно. Спасибо! :)
iago-lito 9 лет назад
0
Похожие вопросы
-
2
Как отправить escape-символ на OS X терминал?
-
1
Как разблокировать заблокированный файл псевдонимов в OS X?
-
6
Какие функции Zsh вы используете?
-
-
4
Использование публичных терминалов для входа в ваши личные учетные данные
-
5
Как изменить шрифт консоли Windows XP?
-
8
Убийство Windows Shell
-
2
Как я могу получить OSX Terminal.app для открытия полноэкранного режима, а не каскадного?
-
3
Mac OS X: обычные места, где должны жить бинарные файлы
-
2
Mac OS X: нужен простой скрипт
-
4
Прозрачный терминал Unicode X не привязан к среде рабочего стола?