Из того, что я понимаю, вы хотите выводить случайное число каждые три секунды в файл. Но кэширование будет иметь место, поэтому вы не увидите свои цифры, пока кеш не станет слишком большим, обычно порядка 4 Кбайт.
Я предлагаю, чтобы в вашем цикле вы добавили f.flush () перед строкой sleep ().
Кроме того, подобно wheaties sugessted, у вас должна быть надлежащая обработка исключений (если я хочу остановить вашу программу, я, скорее всего, сделаю SIGINT, используя Ctrl + C, и ваша программа не остановится в этом случае) и правильный выход путь.
Я уверен, что когда вы тестируете свою программу, вы сильно ее убьете, чтобы остановить, и любое записанное случайное число не будет записано, потому что файл не закрыт должным образом. Если ваша программа может нормально завершиться, у вас будет close () d файл, а close () запускает flush (), и в вашем файле будет что-то записано.