Как захватить печать функции импортированного скрипта

У меня есть функция загрузки данных для нейронной сети, которая определяет объект генератора, поэтому я могу легко передать его функциям обучения и тестирования, реализованным в тензорном потоке.

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

Загрузчик данных.py:

def dataloader(batch_size=4, training=true):
    ...
    print(current_dataset)
    ....
    yield input_data, ground_truth

Оценка.py:

from Dataloader import dataloader

train_gen = dataloader(batsize=5, training=True)

train_data, gt = next(train_gen)
current_dataset = ***print of Dataloader.py***

Есть ли удобный способ получить печать вызываемого скрипта или другой способ получить информацию, переданную в Evaluation.py (без изменения вывода функции загрузчика данных)

Заранее спасибо!

Обновлено:

Для других пользователей - мне пришлось обернуть следующий вызов моего генератора, чтобы добиться желаемого результата - например.

from Dataloader import dataloader
import io
import contextlib

train_gen = dataloader(batsize=5, training=True)

with contextlib.redirect_stdout(io.StringIO()) as f:
    train_data, gt = next(train_gen)
current_dataset = f.getvalue()

Отвечает ли это на ваш вопрос? Передать частичный вывод функции другой функции в качестве аргумента?

TechSolomon 04.05.2022 11:23

Не совсем так, но спасибо! - ответ, который дал @Daweo, был именно тем, что я искал

Chris 04.05.2022 11:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предлагаю попробовать contextlib.redirect_stdout для этой задачи, пример использования

import io
import contextlib
def func():
    print("123")
    return 1
with contextlib.redirect_stdout(io.StringIO()) as f:
    x = func()
output = f.getvalue()
print(int(output))  # 123

Другие вопросы по теме