2014-07-21 43 views

回答

1

The a+ mode打开供读取和写入(创造,如果有必要的文件),但文件中的初始位置是在年底,使您可以将数据添加它(这是什么a代表)。要阅读任何有用的内容,您必须首先将seek添加到其他地方。

seek $fh 0 
set firstLine [gets $fh] 

注意,这是在对比的是r+模式,该模式设置初始位置到文件的开始,并且w+模式,它截断上开口的文件。 (为了完整起见,这里还有r这是只读的,w这是只写和a这是唯一的追加,并设置一个特殊的OS标志,以强制实施严格在支持这种语义的平台。)

1

是的,你可以同时读取和写入文件,但是你必须打开它进行读/写访问。用a +标记打开文件不允许从文件读取:

a + ...打开文件进行写入。该文件不存在,创建它。 将当前位置设置为文件末尾。

你想要做的是在r +模式下打开文件,如果存在,或者如果它不存在,在w +模式下。这将允许您在文件上使用读取操作。

参见在TCL文件访问模式的详细信息here.

1

我做了以下,它工作得很好。

集FH [开/tmp/test.csv一个+] fconfigure $ FH -buffering线

这吐出来一行一行到文件中。因此,在我的脚本正在执行的任何特定时间点,我可以打开CSV文件并查看数据。其他选项包括以下内容 -

tcl> set fh [open test a+] 
file13 
tcl> fconfigure $fh -buffering none 
tcl> puts $fh "line 1" 
tcl> puts $fh "line 2" 
tcl> puts $fh "line 3" 

[[email protected] testserver]$ more test 
line 1 
line 2 
line 3 

tcl> fconfigure $fh -buffering full 
tcl> puts $fh "line 4" 
tcl> puts $fh "line 5" 
tcl> puts $fh "line 6" 

[[email protected] testserver]$ more test 
line 1 
line 2 
line 3 


tcl> fconfigure $fh -buffering line 
tcl> puts $fh "line 7" 
tcl> puts $fh "line 8" 
tcl> puts $fh "line 9" 

[[email protected] testserver]$ more test 
line 1 
line 2 
line 3 
line 4 
line 5 
line 6 
line 7 
line 8 
line 9 
[[email protected] test]$ 

谢谢Kenneth Aalberg和Donal研究员。

欣赏超快反应!

+0

您可能希望检查您认为最有用的答案是“正确”(向其他潜在答复者表明您有答案),并且提出您认为有用的答案中的任何一个或两个答案。 – Simon