Tcl文件访问

发布于:2024-03-02 ⋅ 阅读:(146) ⋅ 点赞:(0)

1. 基本文件输入输出命令

open 文件名 方式
set f [open $filename "r"]
f 是文件的通道ID,可以使用open命令打开文件并获取通道ID
r 只读方式打开,文件必须已经存在
r+ 读写方式打开,文件必须已经存在
w 只写方式打开文件,如果文件存在则清空文件内容,否则创建一新的空文件
w+ 读写方式打开文件,如文件存在则清空文件内容,否则创建新的空文件
a 只写方式打开文件,文件必须存在,并把指针指向文件尾
a + 只读方式打开文件,并把指针指向文件尾。如文件不存在,创建新的空文件
gets 文件内容 返回文件行
gets $f line
set fileId [open "test.txt" r]
while {[gets $fileId line] != -1} {
    puts $line
}
read fileId 读取文件内容
puts stdout $line 把string写到fileId中
tell fileId 返回fileId标识的文件的当前访问位置
eof fileId 如果到达fileId文件的末尾返回1,否则返回0
close $fileId 关闭标识为fileId的文件

2.写入文件

proc write_to_file {output_file} {
	set out [open $output_file "w"]
	set a s1
	puts $out "list of ports: $s1"
	close $out
}

3.读取文件

proc read_of_file {input_file} {
	set r [open $input_file "r"]
	set content [read $r]
	close $r
	puts $content
}
lsearch list pattern 返回list中第一个匹配pattern元素的索引
set a {how are you}
lsearch $a y*

4.获取文件特定内容

set file [open "place_compute_timing.rpt" r]
while {![eof $file]} {
	gets $file line
	if {[regexp "Timing Summary" $line]} {
	set name_lists [split $line "|"]
	gets $file line 
	set slack_lists [split $line "|"]
	set WNS_number [lsearch $name_list "WNS"]
	set TNS_number [lsearch $name_list "TNS"]
	set WNS [lindex $slack_lists $WNS_number]
	set TNS [lindex $slack_lists $TNS_number]
    }
}
puts "func: $WNS"
puts "func: $TNS"
close $file
本文含有隐藏内容,请 开通VIP 后查看