如何在python3 中执行tcl脚本,读取tcl脚本变量。

附加知识点
如何读取系统时间,time.strftime("%m%d")
如何读取系统当前目录 os.getcwd()

import os,time,tkinter
tcl = tkinter.Tcl()
i = 1
current_dir = os.getcwd()
print (current_dir)
date = time.strftime("%m%d")

filename = current_dir+"/run_"+str(date)+"v"_str(i)

tcl.eval("source " + script + "run.tcl")
print (tcl.getvar('name'))

对于以上代码段,
os.getcwd()的作用是获取当前路径,

date = time.strftime("%m%d")的作用是获取当前的日期,

通过tcl.getvar直接调用对应的名字
我这里在tcl中定义了一个变量name
set name a
我们使用下面的命令来得到name
tcl.getvar('name')
记得import tkinter
tcl = tkinter.Tcl()的作用是
利用tkinter.Tcl()得到一个Tcl解释器对象
然后执行它的eval方法,运行一小段Tcl代码。
下面这个链接中解释了基本的一些使用方法,需要注意的是,它使用的并不是python3 所以在命令上和我使用的有所不同,我使用的是python3.
链接: https://zhuanlan.zhihu.com/p/22882167?refer=python-dev.

import tkinter
tcl = tkinter.Tcl()
tcl.eval("source " + script + "run.tcl")
print (tcl.getvar('name'))

问题:在使用tcl中的变量的时候,我遇到了一个问题,就是在tcl中这个变量是个列表,但是在python3中我这里tcl.getvar(‘name’)进来变成了字符串,并且这个字符串以空格作为分隔符。
解决方法如下
1 如何将字符串转换为列表

f_name = tcl.getvar('f_name')
f_name_list = [f_name]

2 如何将tcl中的列表转换为python3中的列表

f_name = tcl.getvar('f_name')
f_name_list1 = f_name.split(" ")
f_name_list = [i for i in f_name_list1 if i != '']

其中

f_name.split

的作用是将f_name以空格为标志转换为列表
但是其转换成的列表是以下状态
比如
字符串"f name"转换为列表后为
[“f” " " “name”]

后面

f_name_list = [i for i in f_name_list1 if i != '']

的意思是,删除列表中的空格字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值