Невозможно усечь sys.stdout; возвращает «io.UnsupportedOperation: truncate» - PullRequest
0 голосов
/ 07 ноября 2018

ПОЛНЫЙ КОД:

import sys
import time

counter = 0

while True:
    sys.stdout.write(str(counter))
    time.sleep(1)
    sys.stdout.truncate()
    counter += 1

ЧАСТЬ, КОТОРАЯ ДЕЛА

sys.stdout.truncate()

ВОПРОС (S)

Почему sys.stdout.truncate() возвращает ошибку? Как я могу усечь sys.stdout, если sys.stdout.truncate() не будет работать?

ОПЕРАЦИОННАЯ СИСТЕМА И ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Операционная система: Windows

Версия операционной системы: Windows 10

Язык программирования: Python

Версия языка программирования: Python 3.6

Другие подробности: запуск из командной строки

1 Ответ

0 голосов
/ 07 ноября 2018

sys.stdout - это файловый объект, который соответствует стандартному выводу интерпретатора и не имеет метода truncate ():

https://docs.python.org/3/library/sys.html#sys.stdout

Похоже, вы хотите создать вывод стиля строки состояния. Это должно работать в Python3:

import time

counter = 0

while True:
   print("{}".format(counter), end="\r")
   time.sleep(1)
   counter += 1

См. Как переписать предыдущий вывод на стандартный вывод в python? для получения дополнительной информации

...