Вопрос по unix, python – Как читать / dev / random в python

6

Я прочитал в книге, что/dev/random это как бесконечный файл, но когда я настраиваю следующие коды, чтобы посмотреть, как выглядит контент, он ничего не печатает.

with open("/dev/random") as f:
    for i in xrange(10):
        print f.readline()

Кстати, когда я попробовал это с/dev/urandom, это сработало.

Почему ты читаешьlines со случайного двоичного устройства? Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams Так что это бинарный контент внутри? затемreadline должен ждать несуществующего возврата каретки. Но почему тогда это работает для / dev / urandom? satoru

Ваш Ответ

3   ответа
5
with open("/dev/random", 'rb') as f:
    print repr(f.read(10))
16

FWIW, предпочтительный способ доступа к этому потоку (или что-то подобное) в полупереносимом видеos.urandom ()

os.urandom возвращается/dev/urandomдругой поток (менее безопасный, но более быстрый) в системах Linux.
9

Он выводит случайные байты, а не случайные строки. Вы ничего не увидите, пока не получите новую строку, которая будет происходить в среднем каждые 256 байтов. Причина/dev/urandom Кажется, работает просто, что он работает быстрее. Ждите дольше, читайте меньше или используйте/dev/urandom.

Голя, нет?/dev/urandom это отдельное устройство, которое генерирует только псевдослучайные данные, в отличие от/dev/random который пытается сделать правильную работу (но требует намного больше времени, чтобы сделать это).
Я полагаю, что вы ошиблись первым / dev / random с / dev / urandom ...

Похожие вопросы