我正在使用读取某些类型数据的Python包。它根据数据创建属性,以轻松访问与数据相关的元信息。
如何为属性创建简称?
基本上让我们假设包名称为read_data
,并且它具有一个名为data_header_infomation_x_location
的属性
import read_data
my_data = read_data(file_path)
我该如何为该属性创建简称?
x = "data_header_infomation_x_location"
my_data[1].x
给出错误无属性
以下是我的案例的完整示例
from obspy.io.segy.core import _read_segy
file_path = "some_file_in_my_pc)
sgy = _read_segy(file_path, unpack_trace_headers=True)
sgy[1].stats.segy.trace_header.x_coordinate_of_ensemble_position_of_this_trace
最后一行给出一个数字。例如,x位置
我想要的是将所有这些长嵌套属性stats.segy.trace_header.x_coordinate_of_ensemble_position_of_this_trace
重命名为短名称。
尝试
attribute = "stats.segy.trace_header.x_coordinate_of_ensemble_position_of_this_trace"
getattr(sgy[1], attribute )
不起作用
答案 0 :(得分:1)
怎么样:
from obspy.io.segy.core import _read_segy
attribute_tree_x = ['stats', 'segy', 'trace_header', 'x_coordinate_of_ensemble_position_of_this_trace']
def get_nested_attribute(obj, attribute_tree):
for attr in attribute_tree:
obj = getattr(obj, attr)
return obj
file_path = "some_file_in_my_pc"
sgy = _read_segy(file_path, unpack_trace_headers=True)
sgy[1].stats.segy.trace_header.x_coordinate_of_ensemble_position_of_this_trace
x = get_nested_attribute(sgy[1], attribute_tree_x) # should be the same as the line above
您无法一次性请求属性的属性,但是这会循环遍历各个图层以获得所需的最终值。