Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text TCL-将文本文件中的行提取到TCL脚本_Text_Input_Tcl_Extract - Fatal编程技术网

Text TCL-将文本文件中的行提取到TCL脚本

Text TCL-将文本文件中的行提取到TCL脚本,text,input,tcl,extract,Text,Input,Tcl,Extract,嗯,我试图在网上找到我的答案,但实际上我没有,我真的需要帮助 我有一个文本文件(file.txt),其中包含: 还有一个TCL脚本,允许我读取每行的值: 问题是,当我想要用我的TCL脚本完成文本文件的第1行时,一些信息丢失,额外的字符丢失 如何获得完整的字符串(文本文件的第1行) 非常感谢 您打开文件进行读取,但实际上并没有从中读取$infle只是(基本上)指向文件描述符的指针,而不是文件的内容: % set fh [open file.txt r] % puts $fh file3

嗯,我试图在网上找到我的答案,但实际上我没有,我真的需要帮助

  • 我有一个文本文件(file.txt),其中包含:
  • 还有一个TCL脚本,允许我读取每行的值:
问题是,当我想要用我的TCL脚本完成文本文件的第1行时,一些信息丢失,额外的字符丢失

如何获得完整的字符串(文本文件的第1行)


非常感谢

您打开文件进行读取,但实际上并没有从中读取$infle只是(基本上)指向文件描述符的指针,而不是文件的内容:

% set fh [open file.txt r]
% puts $fh
file3
从文件中读取的惯用方法:逐行读取

set fh [open "C:/Users/00_file/file.txt" r]
set data [list]
while {[get $fh line] != -1} {
    lappend data [split $line ,]
}
close $fh
或者,读取整个文件并在换行符上拆分

set fh [open "C:/Users/00_file/file.txt" r]
set data [lmap line [split [read -nonewline $fh] \n] {split $line ,}]
close $fh
然后访问数据

set Namepath [lindex $data 0 0]   ;# first line, first field 
set dis [lindex $data 1 1]        ;# second line, second field

Tcl代码如下所示:

设置文件[打开c:/filename.txt]
设置文件\u设备[读取$file]
设置数据[拆分$file\u设备“\n”]
对于{set count 0}{$count<2}{incr count}{
放入$data
#每件作品都会打印一行。
#split/n用于获取每行的结尾。
#打开命令以给定路径打开文件。
#read命令用于读取打开的文件。
}
关闭$file

请打断一下
好吗。改进你的问题?1)
file.txt
恰好包含许多行,但是您使用的
split
会打断由逗号(“,”)而不是换行符(“\n”)分隔的内容。2) 你的措辞中的“完整行”是什么?您至少应该以符合您期望的方式(实际上不是您所看到的)记录
file.txt
中的摘录。
set fh [open "C:/Users/00_file/file.txt" r]
set data [lmap line [split [read -nonewline $fh] \n] {split $line ,}]
close $fh
set Namepath [lindex $data 0 0]   ;# first line, first field 
set dis [lindex $data 1 1]        ;# second line, second field