错误:无法在Tcl中设置文件通道名称

错误:无法在Tcl中设置文件通道名称,tcl,tk,Tcl,Tk,我试图打开一个文件进行读取,在Tk文件打开对话框中请求用户输入,但遇到错误“无法打开名为的文件通道” 这是我的密码。 你能告诉我下面代码的问题吗 proc load_input_entries {} { global sa sd sb sc set types { {{Text Files} {.txt} } {{CSV Files} {.csv} } {{All Files} *

我试图打开一个文件进行读取,在Tk文件打开对话框中请求用户输入,但遇到错误“
无法打开名为
的文件通道” 这是我的密码。 你能告诉我下面代码的问题吗

proc load_input_entries {} {
    global  sa sd sb sc

    set types {
        {{Text Files}   {.txt}        }
        {{CSV Files}    {.csv}        }
        {{All Files}    *             }
    }

    set fp [tk_getOpenFile -parent . \
           -title "Select File" \
           -filetypes $types -multiple true \
           -initialdir "/simulation/safe/ip/work" ]

    if {[file exists $fp]} {
        set stuff [read $fp]
        set lines [split $stuff "\n"]
        set sa [lindex $lines 0]
        set sb [lindex $lines 1]
        set sc [lindex $lines 2]
        set sd [lindex $lines 3]
    }
}

tk_getOpenFile
提供文件名。您仍然必须打开该文件才能读取它。试一试

set filename [tk_getOpenFile ...
if {[file exists $filename]} {
    set fp [open $filename]
    ...

如果遇到这样的问题,临时插入
put
命令查看变量的值通常很有用。如果您这样做了,您会看到它有一个文件名而不是一个文件句柄。

tk_getOpenFile
为您提供了文件名。您仍然必须打开该文件才能读取它。试一试

set filename [tk_getOpenFile ...
if {[file exists $filename]} {
    set fp [open $filename]
    ...
如果遇到这样的问题,临时插入
put
命令查看变量的值通常很有用。如果您这样做了,您会看到它有一个文件名而不是一个文件句柄