sys.stdout создает только пустой файл

#python #python-3.x #sys

#python #python-3.x #sys

Вопрос:

У меня есть немного кода, который сообщает результат оптимизации CV и гиперпараметров. Я пытаюсь распечатать результаты в файл. Файл создается, но результаты там не печатаются. Он также не выводит их на терминал. Что не так?

     def report(results, n_top=3):
        original_stdout = sys.stdout
        with open('filename.txt', 'w') as f:
            sys.stdout = f
            for i in range(1, n_top   1):
                candidates = np.flatnonzero(results['rank_test_score'] == i)
            for candidate in candidates:
                print("Model with rank: {0}".format(i))
                print("Mean validation score: {0:.3f} (std: {1:.3f})".format(
                        results['mean_test_score'][candidate],
                        results['std_test_score'][candidate]))
                print("Parameters: {0}".format(results['params'][candidate]))
                print("")
        sys.stdout = original_stdout
    report(gs.cv_results_,10)

  

Комментарии:

1. Можете ли вы предоставить образец результатов массива?

2. Ваш первый for цикл присваивает одну и ту же переменную ( candidates ) каждый раз, перезаписывая все, что было назначено в предыдущих итерациях цикла. Остается только значение последней итерации, и, по-видимому, это была пустая последовательность, в результате чего второй for цикл выполнялся ноль раз. Похоже, что второй for цикл должен был иметь отступ на один уровень дальше, чтобы он выполнялся для каждой итерации первого цикла.