2014-12-23 3 views
0

Я пытаюсь, чтобы Python копировал содержимое .txt-файла в терминал bash в OS X (10.10), но строка не печатается, пока каждый отдельный символ линия была напечатана на линии. Есть ли способ, чтобы Python печатал каждую строку по-символу вместо строк за строкой? Мой код предназначен для ожидания между персонажами, но каждая строка просто занимает много времени для печати:Python печать по символу в терминале OSX

while True: 
    character = text_file.read(1) 
    if not character: break 
    else: 
     sys.stdout.write(character) 
     time.sleep(0.050) 

Когда я запускаю этот код в IDLE, символы печать по одному. В терминале для печати требуется несколько секунд, и каждая строка печатает все сразу. Есть ли способ воспроизвести поведение, которое я вижу в IDLE в терминале?

ответ

0

Добавить sys.stdout.flush() после sys.stdout.write(character)

Причина должна быть, что выход на стандартный вывод в буфер.

+0

Perfect. Я не думал об этом. Я предполагаю, что у IDLE просто нет буфера для stdout. Спасибо за объяснение! – user2569332

+0

@ user2569332 Я рад помочь :) – CyLiu

0

Если вы хотите удалить новую строку в конце строки.

вы можете просто

print character, 

удалит новую строку (\ п).

Смежные вопросы