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

调用tmodule模块stock函数时出现KeyError: ''异常问题咨询

问题根因排查
  • 核心错误来源是函数定义和调用的参数不匹配:你定义的stock函数第一个参数为self,说明该函数本为类成员方法,你直接将其作为普通模块函数调用时,传入的"ABAD1"被赋值给了第一个参数self,stockname参数没有接收到传入值,使用了默认的空字符串"",因此触发stocknames[""]的KeyError报错。
解决方案

方案1:修改为普通模块函数(无需归属类的场景)

删除函数定义的第一个self参数即可,修正后的函数定义如下:

import pandas as pd
import csv
import requests
def stock(stockname="", value=100):
    stocknames = {
        "ABAD1": "59612098290740355",
        "ABDI1": "49054891736433700",
    }
    urlid = stocknames[stockname]
    url = 'http://.............................&i=' + urlid
    content = requests.get(url)
    with open('out.csv', 'w') as f:
        writer = csv.writer(f)
        for line in content.iter_lines():
            writer.writerow(line.decode('utf-8').split(','))
    df = pd.read_csv('out.csv')
    return (....)

改完后你原有的调用语句tm.stock("ABAD1")即可正常运行。

方案2:按类成员方法规则调用(本就属于类的场景)

如果stock本身就是你定义的类的成员方法,需要先实例化类,再通过实例调用方法:

import tmodule as tm
# 将下方StockUtil替换为你代码中实际的类名
stock_ins = tm.StockUtil()
st = stock_ins.stock("ABAD1")
优化建议

你可以在取字典值前增加参数合法性校验,避免抛出模糊的KeyError,方便快速定位问题:

if stockname not in stocknames:
    raise ValueError(f"非法的股票代码:{stockname},支持的代码列表为{list(stocknames.keys())}")
urlid = stocknames[stockname]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:03