当前位置:   article > 正文

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

python 读取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'))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

对于以上代码段,
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'))
  • 1
  • 2
  • 3
  • 4

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

f_name = tcl.getvar('f_name')
f_name_list = [f_name]
  • 1
  • 2

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 != '']
  • 1
  • 2
  • 3

其中

f_name.split
  • 1

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

后面

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/655138
推荐阅读
相关标签
  

闽ICP备14008679号