我需要在 IPython notebook 单元格中捕获单行代码的输出。单元格中还有其他代码行,我不想捕获它们的输出。做这个的最好方式是什么?有没有线魔术可以做到这一点,还是我应该把线移到它自己的单元格?
这是我所追求的一个例子:
在[1]中:
%%capture output
import h2o
h2o.init()
train_fr = h2o.H2OFrame({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
test_fr = h2o.H2OFrame({'a': [4], 'b': [7], 'c': [10]})
drf = h2o.estimators.H2ORandomForestEstimator()
drf.train(y = 'c', training_frame = train_fr)
print(drf.model_performance(test_data = test_fr))
h2o.shutdown()
在[2]中:
with open('model_performance.txt', mode = 'w') as file:
file.write(output.stdout) # full of junk
model_performance.txt
的所需内容:
ModelMetricsRegression: drf
** Reported on test data. **
MSE: 1.690000000000002
RMSE: 1.3000000000000007
MAE: 1.3000000000000007
RMSLE: 0.12576938728903375
Mean Residual Deviance: 1.690000000000002
我发现这个有同样的问题。我有一个烦人的实用程序输出到 stdout (MoviePy ipython_display),我不想让整个单元格静音(这样 print(f"...) 就不起作用了。