TCL中的文件读取、写入和追加

9
在TCL中,如何使用for循环或foreach循环将不同的内容追加到单个文件中?

“不同的内容”是什么意思? - Bryan Oakley
3个回答

24

你是指像这样的东西吗?

set fo [open file a]
foreach different_content {"text 1" "text two" "something else" "some content"} {
  puts $fo $different_content
}
close $fo

您以追加模式(a)打开了文件 file,并向文件描述符(在示例中为$fo)写入内容。

更新: 如果您想要追加变量内容,您需要修改脚本如下:

set fo [open file a]
foreach different_content [list $data1 $data2 $data3 $data4] {
  puts $fo $different_content
}
close $fo

没问题,但我还有一个问题。问题是,假设我声明了以下内容:set data1 "connect / as sysdba;\n" set data2 {spool $TMP/"DBTEST"_dbmode.txt} set data3 "\nSELECT OPEN_MODE, NAME, CONTROLFILE_TYPE FROM V$DATABASE;\n"等等...如果我想要将它们写入文件,那么如何替换data1、data2等的变量值呢?实际上,我想在foreach循环中使用$data1的值,那我该怎么办?请帮帮我。set data4 "spool off;\n" - galvin Verghese
@galvin:我不完全确定我是否正确理解了你的意思,但我已经更新了我的答案。 - bmk
看一下我定义变量值的情况:让它是:设置data1“这是Data1的值”,第二个是设置data2“这是Data2的值”。现在我想使用foreach循环来编写变量data1和data2的值,那么我应该怎么做呢?请帮帮我。我是这样做的:set fo [open $filename w]foreach different_content {data1 data2} {puts $fo "set $different_content [set $different_content]"} close $fo但它不起作用。 - galvin Verghese
@galvin:如果你这样做,你会把"data1"和"data2"写入文件。你需要这样做:foreach different_content "$data1 $data2" {puts $fo $different_content} - bmk

1
以下代码创建一个文本文件在文件夹'P'中,并将内容写入其中。
set fid [open p:\\temp.txt w]

puts $fid "here   is the first line."

close $fid

0
以下代码适用于从文件中读取数据,其中'sample.tcl'文件位于'p'文件夹中。 标题
set fp [open "p://sample.tcl" r]

set file_data [read $fp]

puts $file_data

close $fp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接