背景描述:用户将天软代码以脚本(.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