我有一个扩展名为.gz的文件。当我尝试使用以下TCL命令读取和打印文件时,即使我能够在VI编辑器中看到内容,也无法读取文件。
我尝试使用以下TCL代码:
set of [glob *.gz ]
set op [open "$of" r]
set file_data [read $op]
set data [split $file_data "\n"]
foreach line $data {
puts " $line"
}
答案 0 :(得分:5)
在Tcl 8.6中,你有内置的支持,所以你可以这样做:
set f [open $filename]
zlib push gunzip $f
set data [read $f]
close $f
zlib push gunzip
只是将合适的解压缩变换附加到频道。
在8.5及之前,您最好使用zcat
或gzcat
从管道中读取(取决于平台详细信息:
set f [open "|gzcat $filename"]
set data [read $f]
close $f
不足之处在于它远不如便携。
答案 1 :(得分:0)
鉴于名为 foo.gz 的文件,您可以使用以下内容:
set pipeline [open "| zcat foo.gz"]
set data [read $pipeline]
close $pipeline
这显然依赖于外部gzip实用程序。可能有一个纯TCL解决方案,但如果你的环境有一个gzip可执行文件,这是快速而简单的。