Tcl 跳行问题

Tcl 跳行问题,tcl,Tcl,下面的代码跳过奇数行,如1,3,5,7,9……必须执行wat才能使用此代码从文件中获取所有行 set in [filename r] seek $in 0 start while { [gets $in line] != -1 } { gets $in line puts $line } 您在条件中执行一次获取$in line,在循环体中执行一次;因此,在条件中读取的行将丢失。您可能希望删除循环体中的一个。您正在执行的在行中获得$in一次在条件中,一次在循环体中;因此,在条件中

下面的代码跳过奇数行,如1,3,5,7,9……必须执行wat才能使用此代码从文件中获取所有行

set in [filename r]
seek $in 0 start
while { [gets $in line] != -1 } {
    gets $in line
    puts $line
}

您在条件中执行一次
获取$in line
,在循环体中执行一次;因此,在条件中读取的行将丢失。您可能希望删除循环体中的一个。

您正在执行的
在行中获得$in
一次在条件中,一次在循环体中;因此,在条件中读取的行将丢失。您可能想删除循环体中的一行。

您使用了两次get,这就是为什么您只得到奇数行

其他解决方案:

我宁愿使用read函数读取文件的全部内容,然后逐行处理这些内容,而不是使用get。因此,我们通过将文件作为行列表来完全控制对文件的操作

设置文件名[lindex$argv 0]

catch{set fptr[open$fileName r]}

设置内容[读取$fptr]#读取文件内容

关闭$fptr;关闭该文件,因为它现在已被读取

设置splitCont[split$contents“\n”]#将文件内容拆分到新行


splitCont是一个列表,它将文件的行作为单独的元素

使用两次GET,这就是为什么只获得奇数行

其他解决方案:

我宁愿使用read函数读取文件的全部内容,然后逐行处理这些内容,而不是使用get。因此,我们通过将文件作为行列表来完全控制对文件的操作

设置文件名[lindex$argv 0]

catch{set fptr[open$fileName r]}

设置内容[读取$fptr]#读取文件内容

关闭$fptr;关闭该文件,因为它现在已被读取

设置splitCont[split$contents“\n”]#将文件内容拆分到新行


splitCont是一个列表,其中包含文件行作为单个元素

@Nazeeb,如果您对geekosaur的答案感到满意,您应该接受它。“这是斯塔克萨的礼节。”纳泽布,如果你对吉科索的回答感到满意,你应该接受。这是stackoverflow的礼节。