我无法逐行读取文件并获取行列表

时间:2015-11-04 10:13:22

标签: tcl tk

此代码有什么问题

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

2 个答案:

答案 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

文档:fileutil包,lappendlindexnamespacepackageputs