You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取地震数据文件二进制头部时出现错误,寻求技术解决方案

从SEGY地震文件提取二进制头部信息的错误修复

问题描述

尝试从地震数据文件中获取二进制头部信息时出现两处错误,以下是所用代码及错误详情:

原代码

# Open file
with segyio.open(filename, ignore_geometry=True) as f:
# Get all header keys:
    header_keys = segyio.binfield.keys
    print("Header Keys : ", header_keys)
    # Initialize df with trace id as index and headers as columns
    trace_headers1 = pd.DataFrame(index=range(1, f.tracecount+1),columns=header_keys.keys())
    print("Trace Headers : ", trace_headers1)
    
    # Fill dataframe with all trace headers values
    for k, v in header_keys.items():
        trace_headers1[k] = f.attributes(v)[:]
print(trace_headers.head())
trace_headers1.to_csv('out_bin.csv')

错误详情

  • AttributeError: 'function' object has no attribute 'keys'
    触发点在header_keys.keys()行:segyio.binfield.keys是函数对象,需调用(加括号)才能返回字典,直接引用函数本身无法访问keys()方法。
  • NameError: name 'trace_headers' is not defined
    触发点在print(trace_headers.head())行:代码中定义的DataFrame变量名为trace_headers1,此处变量名拼写错误。

修复后的代码

# Open file
with segyio.open(filename, ignore_geometry=True) as f:
# Get all header keys:
    header_keys = segyio.binfield.keys()  # 修复:调用keys函数获取字典
    print("Header Keys : ", header_keys)
    # Initialize df with trace id as index and headers as columns
    trace_headers1 = pd.DataFrame(index=range(1, f.tracecount+1), columns=header_keys.keys())
    print("Trace Headers : ", trace_headers1)
    
    # Fill dataframe with all trace headers values
    for k, v in header_keys.items():
        trace_headers1[k] = f.attributes(v)[:]
print(trace_headers1.head())  # 修复:修正变量名
trace_headers1.to_csv('out_bin.csv')

补充说明

  • segyio.binfield.keys()会返回SEGY二进制头部字段的键值对字典,必须调用函数才能拿到可用数据。
  • 变量名需全程保持一致,避免因拼写疏漏引发未定义异常。

内容的提问来源于stack exchange,提问作者Gomathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:45:35