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

Q:pyTSL如何调用本地天软脚本    

  • 背景描述:用户将天软代码以脚本(.tsl或者.tsf)形式保存在本机电脑。
    为了解决如何使用第三方交互调用天软本地脚本的问题,本文中实现了使用python交互模块pyTSL调用本地脚本样例,供用户参考。

    A:1、读取本地脚本内容
      2、执行exec或者call方法时,将第1步中读取的内容传到code参数中。

    案例实现
    1、编辑并保存.tsf脚本:
    在文本文件中编辑代码并保存为.tsf后缀
    function demo(a);
    begin
       return a+100;
    end



    2、python实现读取脚本内容,使用pyTSL执行函数
    使用python的内置OS模块,读取指定天软脚本文件或者指定目录下所有的天软脚本函数内容。执行pyTSL.Client.call或执行pyTSL.Client.exec将脚本内容传到code参数中。
    pyTSL接口详细说明可参考:FAQ:天软pyTSL接口
    注:如果多个脚本存在调用关系,应将多个脚本放同一目录,读取指定目录下所有的天软脚本函数内容

    python范例代码:
    import pyTSL
    #用于读取天软脚本函数的包
    import CallTSLLocalFunc

    # 替换成你的文件或目录路径
    #path = "C:\\Users\\os\\Desktop\\tsl_test"
    path = "C:\\Users\\os\\Desktop\\tsl_test\\demo.tsf"

    #调用读取脚本函数
    code_str=CallTSLLocalFunc.TSLFucToStr(path)

    c = pyTSL.Client(user, password,"tsl.tinysoft.com.cn",443)
    if c.login() == 0:
      print(c.last_error())
    else:
    #调用demo函数
      r = c.call('demo',101,code=code_str)

    if r.error():
      print(r.message())
    else:
      print("demo结果:",r.value())



    封装读取天软脚本函数CallTSLLocalFunc.py,附件:附件:CallTSLLocalFunc.py
    CallTSLLocalFunc.py代码:
    import os

    def TSLFucToStr(path):
      # 判断path是文件还是目录
      code_str=""
      if os.path.isfile(path):
        # 如果是文件,直接读取
        with open(path, 'r') as file:
          content = file.read()
          code_str = content
      elif os.path.isdir(path):
        # 如果是目录,读取目录下的所有.tsl和.tsf文件
        for root, dirs, files in os.walk(path):
          for filename in files:
            if os.path.splitext(filename)[1].lower() in ['.tsl', '.tsf']:
              file_path = os.path.join(root, filename)
              with open(file_path, 'r') as file:
                content = file.read()
                code_str+="\n"+content
      return code_str