【发布时间】:2022-01-18 15:35:12
【问题描述】:
我正在尝试创建一个类,以便在 Jupyter Notebook 中快速简单地查看我的数据。
import color
import h5py
class h5view:
tempf = h5py.File('juliadata\jul20160102_150km.001.hdf5', 'r')
def data():
print(color.YELLOW + 'Data' + color.END)
templist = []
for name in h5view.tempf['/Data']:
templist.append(name)
return templist
def metadata():
print(color.YELLOW + 'Metadata' + color.END)
templist = []
for name in h5view.tempf['/Metadata']:
templist.append(name)
return templist
这运行没有任何错误。在下一个 Jupyter Notebook Cell 中输入
h5view.data()
h5view.metadata()
输出
Data
Metadata
['Data Parameters',
'Experiment Notes',
'Experiment Parameters',
'Independent Spatial Parameters',
'_record_layout']
但在元数据之前应该有另一个返回列表。我尝试使用类中的其他函数(上面未列出),它总是返回最近调用的函数,但不返回任何其他函数。
如果我只是运行h5view.data()
那么输出将是
Data
['Array Layout', 'Table Layout']
如何阻止此处的列表在我调用另一个函数时消失?
我尝试将函数调用分配给变量,如下所示:
a = h5view.data()
b = h5view.metadata()
print(a, b)
给出一个新的输出:
Data
Metadata
['Array Layout', 'Table Layout'] ['Data Parameters', 'Experiment Notes', 'Experiment Parameters', 'Independent Spatial Parameters', '_record_layout']
现在我想要的列表在这里,但它在元数据之后。我想要的是看起来像这样的东西:
Data
['Array Layout',
'Table Layout']
Metadata
['Data Parameters',
'Experiment Notes',
'Experiment Parameters',
'Independent Spatial Parameters',
'_record_layout']
有没有一种简单的方法可以做到这一点,或者我应该采取另一种方法?
【问题讨论】:
-
因为笔记本总是只显示最后一个表达式的返回值。 (当然,无论是明确打印的内容。)
-
打印 any 返回值的事实是您正在使用的交互式解释器的工件,而不是您的代码。如果您想查看这两个函数的输出,请为第一个调用
print(h5view.data())。 (如果您将其作为脚本运行,您将不会看到 either 返回值而不显式打印它们。)
标签: python function class jupyter-notebook h5py