Есть ли функция для печати без новой строки, которая не является sys.stdout.write или print ("", end = "")? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь создать игровой движок, используя командную строку python, но sys.stdout.write и print('',end='') сбивают командную строку и дают сбой.

Я пробовал аргумент ключевого слова stdout и print end, но они приводят к аварийному завершению командной строки. Что происходит?

Этот код, использующий print без аргумента end, работает нормально:

while True:
    print('                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         =                                                                              ===                                                                            =====                                                                          =======                                                                        =========                                                                      ===========                                                                    =============    YYYYYYYYYYY                                                 ================================================================================')

Хотя при использовании sys.stdout.write для предотвращения печати новой строки возникают проблемы:

import sys
while True:
    sys.stdout.write('                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         =                                                                              ===                                                                            =====                                                                          =======                                                                        =========                                                                      ===========                                                                    =============    YYYYYYYYYYY                                                 ================================================================================')
    sys.stdout.flush()

Я ожидаю, что он будет работать быстро с print и end или sys.stdout, но вместо этого консоль зависнет и вылетит.

1 Ответ

4 голосов
/ 25 июня 2019

Вы используете оболочку IDLE для запуска вашей программы, не .

IDLE плохо управляет выводом текста и замедляет при выводе очень долгострок (это причина, по которой print без аргумента ключевого слова end работает нормально, потому что вы печатаете несколько отдельных строк, а не 1 строку, которая становится все длиннее).

Вместо этого просто используйтестандартная командная строка Windows (cmd.exe).

Вы можете сделать это (при условии, что ваша установка была правильно настроена), запустив файл .py через графический интерфейс или выполнив:

python filename.py

в командной строке.

Это было сообщено как ошибка в Python ( Окно оболочки IDLE становится очень медленным при отображении длинных строк ) в 2006 году, и проблема все еще остается открытой.

Вы можете прочитать больше, включая некоторые цифры, на этом Посте переполнения стека.

...