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

使用Python的swmm_api调用LID_USAGE时出现TypeError错误的求助

修复swmm-api调用LID_USAGE时的TypeError问题

问题原因

swmm-api 0.4.37版本解析LID_USAGE相关行时,未正确处理带空格的路径参数(比如带空格的报告文件路径),直接用普通空格拆分导致参数数量超出LID_USAGE.__init__要求的8-12个位置参数范围,触发TypeError。

修复方案

方案1:修改SWMM模型文件(简单直接)

打开你的SWMM .inp模型文件,找到包含带空格路径的行(比如报告文件路径设置),用双引号将带空格的路径包裹起来。例如:

原行:Report File C:\My Reports\output.rpt
修改后:Report File "C:\My Reports\output.rpt"

保存文件后重新运行代码,解析器会将带引号的内容识别为单个参数,避免拆分错误。

方案2:重载解析方法(无需修改inp文件)

在你的Python代码中,重载LID_USAGE类的行解析方法,使用shlex.split()替代默认的拆分逻辑,确保带空格的参数被正确识别:

import shlex
from swmm_api import read_inp_file
from swmm_api.input_file.sections.lid_usage import LID_USAGE

# 备份原解析方法
original_from_line = LID_USAGE.from_inp_line

# 定义修复后的解析方法
def fixed_lid_usage_parse(line):
    # 用shlex.split处理带空格和引号的参数
    parsed_parts = shlex.split(line)
    return original_from_line(*parsed_parts)

# 替换原方法
LID_USAGE.from_inp_line = fixed_lid_usage_parse

# 正常加载模型文件
inp = read_inp_file("your_model_file.inp")
# 现在可正常访问LID_USAGE数据
print(inp.LID_USAGE)

方案3:升级swmm-api版本

检查swmm-api的最新版本,后续版本可能已修复该解析问题,执行命令升级:

pip install --upgrade swmm-api

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:03:09