TCL脚本语言-14-输入输出系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

file stat name varname
查询得到文件 name 的相关属性,并且存放到数组
varname 中。
file system name
返回文件 name 所在文件系统的类型;
file type name
返回 name 所表示的文件类型;
上面的命令都是用来查询设置文件或者目录的属性的。不知大家有没有使用 C Runtime
file attributes name file attributes name ?opt? file attributes name ?opt vla? ?opt val?... file executable name
用法描述 返回文件 name 最后被读取的时间;该命令在 FAT 文 件系统上无效(返回数据可能不正确); 设置或者修改文件 name 的最后被修改时间。time 参 数表示 1970/1/1 到现在的秒。设置最后修改时间,和 那个著名的 touch 命令完成类似的功能; 查询或者设置文件的属性。第一个命令查询所有的属 性;第二个命令查询指定的属性;第三个设置属性的 值。
Email: leiyuhou010@gmail.com
TCL、Python 和软件测试自动化
171
% dir . D:\tmp 的目录
2005-05-20 07:27
442 aa.txt
2005-05-20 07:27
442 bb.txt
2005-05-22 21:52 <DIR>
t
2 个文件
884 字节
884 字节 4,141,834,240 可用字节
2005-05-22 21:53 <DIR>
t
0 个文件
0 字节
3 个目录 4,141,834,240 可用字节
搜索目录
有些时候我们需要在目录中寻找匹配一定模式的文件或者子目录,这可以使用 glob 命 令来完成。下面命令得到当前目录下所有的 tcl 脚本文件:
perf_test.tcl pkgIfNeeded.tcl test_func.tcl 返回一个列表,三个元素都是搜索到文件名,如果我们下发如下的命令:
glob –directory –types f *.tcl
作者:雷雨后
Email: leiyuhou010@gmail.com
TCL、Python 和软件测试自动化
3 个目录 4,141,834,240 可用字节
% file rename aa.txt bb.txt t
#移动文件到目录 t 中
% dir t D:\tmp\t 的目录
2005-05-20 07:27 2005-05-20 07:27
2 个文件 2 个目录 % dir . D:\tmp 的目录
442 aa.txt 442 bb.txt
TCL、Python 和软件测试自动化
167
输入输出系统
输入和输出相比大家都不陌生。说起它,我就想起来大学第一次写 Pascal 程序的时候, 总要写出这样的代码:
Program Test(input,output); Begin
Write(‘Hello,World!’); End. 老实说,第一行的 input 和 output 两个参数让我迷惑了很久,一直都不明白它们的用途。 后来才慢慢的知道它们叫做输入和输出。 输入和输出总是和文件系统紧密相连。现代操作系统中,所有的设备几乎都被抽象成文 件系统。但是不同操作系统下文件系统格式不同,例如 Unix 和 Windows、MAC 的目录等都 有一定的差异。好在 TCL 语言比较好的解决了这个问题。本章节我们会详细的介绍如何在 TCL 中操作文件系统以及读写文件。
v(atime) = 1116764165 v(ctime) = 1116761242 v(dev) = 3 v(gid) = 0 v(ino) = 0 v(mode) = 33188 v(mtime) = 1116545258 v(nlink) = 1 v(size) = 442 v(type) = file v(uid) = 0 % file system $fp
文件如果存在并且当前用户有搜索它所在目录的权
限,那么就返回 1,否则返回 0;
file isdirectory name
name 是否是一个目录,是就返回 1,否则返回 0
file isfile name
如果 name 是一个文件,那么就返回 1,否则返回 0
file size name
返回文件的大小(字节数)
->d:\tmp\aa.txt ->1 ->1 ->1 ->0 ->1 ->442
->native NTFS #这是一个 NTFS 系统
下面我们再来看看 file attributes 命令:
% file attributes $fp
作者:雷雨后
Email: leiyuhou010@gmail.com
file join name ?name..? 把 name 拼接起来组成一个完成的路径,目录分隔符号
因不同操作系统而异;
file nativename name
返回一个符合操作系统特点的路径名;
file normalize name
返回标准化的路径名字;
Fra Baidu bibliotek
file rootname name
返回除了最后扩展名的文件名字
看看这个文件是否是可执行的,是就返回 1;
作者:雷雨后
Email: leiyuhou010@gmail.com
TCL、Python 和软件测试自动化
168
file readable name
返回文件 name 是否是可读的。
file writable name
返回文件是否是可写的。
file exits name
TCL、Python 和软件测试自动化
169
-archive 1 -hidden 0 -longname D:/tmp/aa.txt -readonly 0 -shortname D:/tmp/aa.txt -system 0 % foreach {opt val} [file attributes $fp] {puts " $opt = $val"}
-archive = 1 -hidden = 0 -longname = D:/tmp/aa.txt -readonly = 0 -shortname = D:/tmp/aa.txt -system = 0 % file attributes $fp –shortname #查询短文件名 D:/tmp/aa.txt % file attributes $fp –readonly 1 #让文件具有只读
glob –directory . –types f –tails -- *.tcl 其中选项 –directory .表示在当前目录下搜索;-types f 表示搜索文件,如果是-types d 表示搜索目录名;-tails 表示只返回文件名,不要目录名。*.tcl 则是匹配模板,用来匹配文 件名。 例如上面命令的执行结果是:
file split name
和 file join 恰好相反,将路径 name 拆分层各个独立的
目录单元;
file tail name
返回路径 name 中剔除目录名后的最后文件名
请看下面的例子:
% file dirname {d:\tmp\a.txt}
->d:/tmp
% file extension {d:\tmp\a.txt}
% file nativename c:/windows/cmd.exe ->c:\windows\cmd.exe
作者:雷雨后
Email: leiyuhou010@gmail.com
TCL、Python 和软件测试自动化
170
% file normalize c:/windows/system32/.././cmd.exe
操作文件目录
复制文件的操作采用 file copy 来完成,格式如下: file copy ?-force? ?--? source target file copy ?-force? ?--? source ?source ……? targetDir 第一个用来赋值单个文件到另外一个文件;第二个则是赋值 n 个文件(n>=1)到另外一 个目录。
% cd c:\\ % file mkdir aa bb cc % file delete aa bb cc % file mkdir aa/bb/cc % cd aa/bb/cc % file delete -force c:/aa %pwd
->进入 C:\目录 ->创建三个目录:C:\aa,C:\bb,C:\cc ->再删掉这三个目录 ->一次创建三个目录:C:\aa\bb\cc ->进入这个最深的目录 c:\aa\bb\cc ->删除 C:\aa,也能成功 ->C:\,删除的时候,当前目录会自动回退
file rename ?-force? ?- -? source target file rename ?-force? ?- -? source ?source ...? targetDir 上面的两个命令用来修改文件名、目录名;或者移动文件或者目录;例如:
% pwd
#当前目录为:D:/tmp
作者:雷雨后
路径操作
有些时候分析表示文件路径名的字符串,是很有必要的工作。C 语言中也包含了这样的
库函数,TCL 中也有对应的实现:
命令格式
用法描述
file dirname name
返回 name 文件的所在目录名字。这只是一个字符串的
处理,不管文件 name 是否存在!
file extension name
返回文件的扩展名;
C:/WINDOWS/cmd.exe
% file rootname c:/windows/cmd.exe
->c:/windows/cmd
% file tail c:/windows/cmd.exe
->cmd.exe
这里面需要解释的是 file nativaname 命令。在 TCL 的目录结构中,采用字符“/”作为 目录结构的分隔字符,这和 Unix 操作系统是一致的;但是 Windows 中则是采用“\”作为分 隔。有些时候我们需要将 TCL 中的目录转换到操作系统特定的格式,那么 file nativename 则能完成这个功能。
->.txt
% file split {d:\tmp\a.txt}
->d:/ tmp a.txt
% eval file join [file split {d:\tmp\a.txt}] ->d:/tmp/a.txt
% file join c:\\ windows system notepad.exe ->c:/windows/system/notepad.exe
操作文件系统
TCL 中能够非常方便的操作文件、目录。包括:查询和设置文件属性、复制、删除以及 路径名字的操作等。所有这些都是通过一个 file 命令来完成,其语法都非常简单,所以我们 这里只是按照分类,列举出该命令的各种用法:
文件属性操作
命令 file atime name ?time?
file mtime name ?time?
172
和刚才命令相比,少了-tails 选项,那么结果中就会多出目录名,如下:
./perf_test.tcl ./pkgIfNeeded.tcl ./test_func.tcl
-types 选项的参数是一个列表,表示只搜索指定的类型。可以为:
file delete ?-force? ?--? pathname ?pathname ... ? 上面的命令用来删除一个或者多个文件、或者目录;通过指定-force 选项,可以强制删 除非空目录。对于只读文件,即使没有-force,该命令也能 delete 掉它。
file make dir ?dir…? 用来在文件系统中创建目录结构。例如:
Library 编程的经历,在 C 语言的库函数中操作文件的函数基本上在这里都能够找到。下面
是几个例子:
% set fp {d:\tmp\aa.txt} % file exist $fp % file readable $fp % file writable $fp % file isdirectory $fp % file isfile $fp % file size $fp % file stat $fp v ; parray v
相关文档
最新文档