Как читать / dev / random в python

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

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

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

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

Ответы на вопрос(3)

with open("/dev/random", 'rb') as f:
    print repr(f.read(10))

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

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

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

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

Ваш ответ на вопрос