FAQ > 金融建模 > 第三方交互 > Python

Q:pyTSL模块调天软时,如何实现不打印tsl脚本中的echo信息?    

  • A:有些公用模型中,为了提示进度或其它特殊情况,会有一些echo提示信息打印出来。
    而在pyTSL模块调用这类模型时,也会在python打印窗口中进行打印,有时提示太多反而会影响关键信息的查看,此时就希望能关掉这些自带的打印提示。

    在天软中借助SetEchoString/UnsetEchoString的设置,将打印输出进行重新定向,不再到终端进行输出。
    具体功能可参考:FAQ:Q:如何取消公用函数中的打印信息

    借助此功能,在python中调用实现如下:
    范例:不打印提示信息
    示例中主要展示了call方式的重定向使用,exce方式也是如此,只需要将需要屏蔽的过程放到SetEchoString方法与UnsetEchoString方法之间,最后再return即可。
    import datetime
    import pyTSL as ts
    c=ts.Client("username","password","tsl.tinysoft.com.cn",443)
    rt=c.login()
    print(c.last_error())
    tsl_code ='''
    function getCB_ImpliedVolatility(stockid,endt);
    begin
    SetEchoString(); //设置重新定向,不再输出打印信息
    setsysparam(pn_stock(),stockid);
    setsysparam(pn_date(),endt);
    CBIm:=CB_ImpliedVolatility(nil,nil,out_ret);
    eS:= UnSetEchoString();//将重新定向的信息返回到eS中,并取消重新定向设置
    return CBIm;
    end;
    '''
    r = c.call("getCB_ImpliedVolatility","SH110059",datetime.date(2025,6,23),code=tsl_code)
    if r.error(): # 有错误打印报错信息
    print(r.message())
    else:
    data = r.value() # 打印结果
    print(data)

    运行结果对比展示: