tcl中文件访问

1. 文件名

   TCL提供了丰富的文件操作命令,通过这些命令你可以对文件名进行操作,以顺序后随机方式读写文件,检索系统保留的文件信息(如最后访问时间).

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

   下面介绍几个基本的文件输入输出命令:

   1) open name? access?

      open命令以access方式打开文件name.返回供其他命令(gets,close)使用的文件标识.如果name的第一个字符是"|",管道命令被触发,而不是打开文件.

       文件的打开有以下方式:

       r  : 以只读方式打开,文件必须已经存在;(这个是默认方式)

       r+ : 以读写方式打开,文件必须存在;

       w  : 只写方式打开文件,如果文件存在则清空文件内容,否则创建新的空文件;

       w+ : 读写方式打开文件,如果文件存在则清空文件内容,否则创建新的空文件;

       a  : 只读方式打开文件,文件必须存在,并把指针指向文件尾;

       a+ : 只写方式打开,并把指针指向文件尾,如文件不存在,创建新的文件;

     Open命令返回一个字符串用于标识打开的文件;

  

   2) gets field?verName? 读fileld标识的文件的下一行,忽略换行符.如果命令中有varname就把该行赋给它,并返回该行的字符数(文件尾返回-1)

   3) read ?nonewline? fileId 读并返回fileId标识的文件中所有剩下的字节. 如果没有nonewline开关,则在换行符处停止.

   4) puts ?nonewline??fileId? string  puts命令把string写到fileId中,如果没有nonewline开关的话,添加换行符.

   5) close?fileId? 关闭标识为fileId的文件,命令返回值为一空字符串.

 

3. 随机文件访问

   默认文件输入输出方式是连续的: 即每个gets或read命令放回的是上次gets或read访位置后面的字节,每个puts命令写数据是接着上次puts写的位置接着写,tcl提供了seek,tell和eof等命令使用户可以非连续访问文件.

 

4. 当前工作目录

  tcl提供两个命令来管理当前工作目录:pwd和cd.

   这两个命令和unix下的命令方式完全一样,这里就不做介绍了.

 

5. 文件操作和获取文件信息

   tcl提供了两个命令进行文件名操作: glob和file.用来操作文件或获取文件信息;

   1) glob命令采用一种或多种模式作为参数,并返回匹配这个模式的所有文件的列表.

      glob ? switches ? pattern? pattern?.....

      例如: %glob *.c *.h main.c hash.c hash.h

   2) file 命令

      file atime name 返回一个十进制的字符串,表示文件的最后被访问的时间.

      file copy

      file delete

      file dirname

      file executable

      file exists

      file extension

      file isdirectory

      file isfile

      file lstat

      file mkdir

      file mtime

      file owned

      file readable

      file rename

      file rootname 

      file size

      file stat

      file tail

      file type 

      file writable

以下给出一个例子,是tcl产生Altera FPGA xxx.mif 文件的例子:

#!/usr/bin/tclsh
set f [open "minit.mif" w+]
puts $f " depth=4096;

width=12;

address_radix=dec;
data_radix = dec;
Content Begin
";

for {set i 0} {$i < 1024} {incr i} {
#  set temp [expr $i/1024*3.1416];
#  puts $f  [expr sin($temp)];

   puts $f "$i : [expr sin($i*0.003071)*1024]";
}
close $f;

你可能感兴趣的:(Tcl脚本)