Как избежать пробелов с stdout в python? - PullRequest
0 голосов
/ 17 марта 2012

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

Это довольно просто и выглядит так:

from random import choice
import sys

char_ranges = [[33,48],[58,65],[91,97],[123,127]]

chars = []
for r in char_ranges:
    for i in range(r[0],r[1]):
        chars.append(chr(i))

while True:
    print choice(chars),
    sys.stdout.flush()

Единственная проблема с ним заключается в том, что ,, используемый после печати символа, приводит к добавлению пробела после вызова stdout.flush().

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

Так как я могу получить непрерывный поток вывода в Python без пробелов?

Ответы [ 2 ]

6 голосов
/ 17 марта 2012

Используйте sys.stdout.write вместо print.

print - это конструкция более высокого уровня для быстрого и грязного вывода.Если вам нужно больше контроля, используйте что-то еще.

1 голос
/ 17 марта 2012

Попробуйте это:

sys.stdout.write(choice(chars))
...