如何将变量从 TCL 传递到 python 并将 return python 输出到同一个 TCL 脚本?
How to pass variable to python from TCL and return python output to the same TCL script?
我正在努力使用 tcl 中的 运行ning python 脚本。我想 运行 tcl 脚本,使用 tcl 变量作为参数调用 python 脚本,然后用 python 处理这些值并将它们传递给相同的 tcl 脚本以进行下一次处理。
假设它是 python 脚本:
import sys
def f(a,b):
return "set lista {" + a + " "+ b +"}"
result = f(sys.argv[1],sys.argv[2])
print(result)
和tcl一个:
set num1 10
set num2 20
set output [exec python "python.py" $num1 $num2]
eval $output
puts [lindex $lista 0]
puts [lindex $lista 1]
我使用过 eval 语句,它对这么小的列表非常有效。事实上,我将有更长的列表或浮点值和字符串,我想将它们彼此分开。现在这个解决方案,使用 eval
,不方便。
我的问题是,是否有可能“更直接地”传递变量?例如,每个值作为单独的变量或什至拆分列表,一个浮点值和另一个字符串。
我知道有 tkinter
库,但我是初学者,我还在学习...老实说,我不确定我应该如何使用它:)
有人能帮忙吗?
您好!
跳过eval
,使用
set lista [split [exec python python.py $num1 $num2]]
使用 python 脚本打印出 space 分隔值:
import sys
def f(a,b):
return str(a) + " " + str(b)
result = f(sys.argv[1],sys.argv[2])
print(result)
只要您没有在值中嵌入 space,这就有效。
我正在努力使用 tcl 中的 运行ning python 脚本。我想 运行 tcl 脚本,使用 tcl 变量作为参数调用 python 脚本,然后用 python 处理这些值并将它们传递给相同的 tcl 脚本以进行下一次处理。
假设它是 python 脚本:
import sys
def f(a,b):
return "set lista {" + a + " "+ b +"}"
result = f(sys.argv[1],sys.argv[2])
print(result)
和tcl一个:
set num1 10
set num2 20
set output [exec python "python.py" $num1 $num2]
eval $output
puts [lindex $lista 0]
puts [lindex $lista 1]
我使用过 eval 语句,它对这么小的列表非常有效。事实上,我将有更长的列表或浮点值和字符串,我想将它们彼此分开。现在这个解决方案,使用 eval
,不方便。
我的问题是,是否有可能“更直接地”传递变量?例如,每个值作为单独的变量或什至拆分列表,一个浮点值和另一个字符串。
我知道有 tkinter
库,但我是初学者,我还在学习...老实说,我不确定我应该如何使用它:)
有人能帮忙吗?
您好!
跳过eval
,使用
set lista [split [exec python python.py $num1 $num2]]
使用 python 脚本打印出 space 分隔值:
import sys
def f(a,b):
return str(a) + " " + str(b)
result = f(sys.argv[1],sys.argv[2])
print(result)
只要您没有在值中嵌入 space,这就有效。