此代码有什么问题
set fid [open "file_name" a+]
while {[gets $fid line] > -1} {
lappend short_keys_list [lindex $line 5]
puts $line
}
close $fid
# while loop not working
答案 0 :(得分:4)
由于您已使用a+
模式打开文件,因此文件指针将设置为文件的末尾。因此,对gets $fid line
的调用返回-1,因为它没有从文件读取并导致while循环终止。
试试这个
set fid [open "file_name" r]
参考: open
答案 1 :(得分:1)
您已经回答了一些有关不起作用的提示。然而,你似乎正在做的最好的解决方案是:
foreachLine line file_name {
lappend short_keys_list [lindex $line 5]
puts $line
}
此调用负责打开和关闭文件,读取文件的每一行并将其存储在您提供的变量名称中(在本例中为line
)并调用您的脚本一次每一行。为此,首先需要准备好fileutil
包:
package require fileutil
namespace import ::fileutil::*
fileutil
软件包包含许多有用的命令,可以轻松处理使用低级文件处理时的主要问题,因为我通常会快速指出#heyhoodiecrowwhydontyoumarryfileutilalready
。