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

TypeError:int()参数不可为'_io.TextIOWrapper' 地震数据处理Python代码报错求解

错误原因
  • 核心问题是变量名重复冲突:处理事件时间时你将秒数值赋值给了变量s,后续打开台站列表文件时,又把文件句柄赋值给了同一个变量s,导致后续调用int(s)时,s已经不是时间秒的字符串,而是_io.TextIOWrapper类型的文件对象,无法转为整数。
  • 额外隐藏问题:读取文件行使用split(" ")会严格按单个空格分割,你提供的all_st文件每行开头有空格,用该写法会分割出空字符串导致解包报错,建议使用无参split()自动处理连续空格、首尾空格。
修正后代码
from obspy import UTCDateTime
import os

datadir = "/home/alireza/Desktop/Saman/Eqcomplete"
homedir = "/home/alireza/Desktop/Saman"

eventlist = os.path.join(homedir, 'events.dat')
stationlist = os.path.join(homedir, 'all_st')

# 用with上下文管理器自动管理文件句柄,无需手动调用close()
with open(eventlist, "r") as e:
    for event in e.readlines():
        year, mon, day, time, lat, lon = event.split()
        h = time.split(":")[0]   # 小时
        m = time.split(":")[1]   # 分钟
        sec = time.split(":")[2]   # 秒,更换变量名避免冲突

        with open(stationlist, "r") as st_file:
            for station in st_file.readlines():
                stname, stlo, stla = station.split()
                OafterB = UTCDateTime(int(year), int(mon), int(day), int(h), int(m), int(sec))
                print(OafterB)
补充说明

如果需要测试运行代码,可先执行pip install obspy安装依赖包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:39:03