- 浏览: 221099 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
hzxlb910:
真详细,收藏哈
maven setting.xml配置说明 -
东方胜:
[b][/b]
脚本语言 Tcl -
345161974:
hyw520110 写道345161974 写道这个Visua ...
Visual Tcl Binary 完整版(完美中文支持) -
hyw520110:
345161974 写道这个Visual Tcl Binary ...
Visual Tcl Binary 完整版(完美中文支持)
wikibook上的文章很有水平,特翻译出来,晒晒。
(译自wikibook,开放书籍库)
文件与通道
Tcl除了具有C语言里面的stdio库的功能外,还提供很多其他的文件操作命令,很像shell脚本,虽然比较繁琐。见下面的例子:
glob *.tcl
用来列出当前目录下的所有.tcl文件。
file copy /from/path/file.ext /to/path
.
file delete /from/path/file.ext
.
file rename before.txt after.txt
.
cd /an/other/directory
.
pwd
如果要临时更换目录,执行代码,可以这样:
set here [pwd]
cd $someotherdir
#... code here
cd $here
更准确的来说,一般很多文件操作工作都是用"通道"来实现的,如:
1、标准通道 (stdin, stdout, stderr)
2、打开的普通文件 (open ...)
3、管道命令 (|)
4、套接字 (TCP)
文件名
通常,文件时用路径名来定位的,在Unix下,用"/"作为路径分隔符,而在Windows下是用"\",这往往给Tcl,乃至C语言,都带来了麻烦。因为在这两种语言里,"\"表示转义字符。如,\t是水平制表符,\n是换行符。幸运的是Windows也接受"/",所以,在Tcl和C里,你可以放心的用左斜杠"/"作为路径分隔符。但有些情况,你要注意一下转义序列
1、防止转义字符被解释的情况,如 \\
2、用花括号括起来的反斜杠路径路径名:{\foo\bar\grill.txt}
但Tc允许你在所有的情况用标准的分隔符"/",所有这样用你一般都比较安全的。Mac下就不行了,因为从MacOS开始,只接受冒号":"所为路径分隔符。
如果有必要的话,你可以这样来转换:
% file normalize \\foo\\bar\\grill.txt
C:/foo/bar/grill.txt
% file nativename /foo/bar/grill.txt
\foo\bar\grill.txt
还可以用 file join命令,如 file join arg1 arg2 ... argN,这时,Tcl会帮你考虑所有平台无关的细节,给你返回一个平台无关的路径。例如:
set somepath [file join foo bar grill.txt]
在Windows下将产生 foo/bar/grill.txt
输入输出
Tcl的输入输出命令几乎都非常接近C语言的stdio库里的命令(只不过去掉了开头的字符f):
set handle [open filename ?mode?]
set data [read $handle ?int?]
tell $handle
seek $handle offset ?from?
puts ?-nonewline? ?$handle? content
gets $handle ?varname?
close $handle
C里的printf命令的功能在Tcl里被分割成两个命令:
format,将数据转换成字符串(类似C的sprintf)
puts,输出结果为字符串,如:puts $handle [format "%05d %s" $number $text]
按行处理文本文件有两种方法,如果文件只有几个M,你可以一口气读完:
set f [open $filename]
foreach line [split [read $f] \n] {
# work with $line here ...
}
close $f
文件稍大了,你只好一行一行的读,虽然相比之下,有点慢:
set f [open $filename]
while {[gets $f line] >= 0} {
# work with $line here ...
}
close $f
最后,如果你想格式化你的文件,使之成为可以执行的Tcl代码,下面的命令最快
source $filename
要touch一个文件,具体的说,如果文件不存在就新建,文件存在就更新其修改时间,可以这么做:
proc touch name {close [open $name a]}
二进制文件
所有的文件都是由字节构成,字节又都是位,即二进制。文件的"二进制"是指那种字节可以是任何值的文件,而且行结束符(在DOS/Windows下,即是回车加换行)不被翻译过来。在Tcl里,可以很好的对二进制文件进行操作,只需要打开一个通道然后设置一下就行了:
set fp [open tmp.jpg]
fconfigure $fp -translation binary
set content [read $fp]
close $fp
运行上面的命令之后,变量content就存有文件的内容,每个字节都一样。
要检验一个文件是否是二进制文件,即是否存在空字节,可以这样,
proc binary? filename {
set f [open $filename]
set data [read $f 1024]
close $f
expr {[string first \x00 $data]>=0}
}
一些文件操作的命令:
很多有用的文件操作命令都集中在file命令下,file命令的第一个参数将告诉你要干什么
* file atime name ?time?
* file attributes name
* file attributes name ?option?
* file attributes name ?option value option value...?
* file channels ?pattern? - returns the handles of currently open files
* file copy ?-force? ?- -? source target
* file copy ?-force? ?- -? source ?source ...? targetDir
* file delete ?-force? ?- -? pathname ?pathname ... ?
* file dirname name - e.g. [file dirname /foo/bar/grill.txt] -> /foo/bar
* file executable name
* file exists name
* file extension name - e.g. [file extension /foo/bar/grill.txt] -> .txt
* file isdirectory name
* file isfile name
* file join name ?name ...?
* file link ?-linktype? linkName ?target?
* file lstat name varName
* file mkdir dir ?dir ...? - creates one or more directories (folders)
* file mtime name ?time?
* file nativename name
* file normalize name
* file owned name
* file pathtype name
* file readable name
* file readlink name
* file rename ?-force? ?- -? source target
* file rename ?-force? ?- -? source ?source ...? targetDir
* file rootname name - e.g. [file rootname /foo/bar/grill.txt] -> /foo/bar/grill
* file separator ?name?
* file size name
* file split name - e.g [file split /foo/bar/grill.txt] -> {foo bar grill.txt}
* file stat name varName
* file system name
* file tail name - e.g. [file tail /foo/bar/grill.txt] -> grill.txt
* file type name
* file volumes - Windows: returns your "drive letters", e.g {A:/ C:/}
* file writable name
发表评论
-
Tcl 基础知识精华20句
2011-03-30 09:47 1443最近在巩固Tcl的基础知 ... -
tcl 字符串操作 替换
2011-03-30 09:47 5691CL:字符串命令 有一个关于TCL的哲学探讨:TCL语法中的 ... -
tcl中如何产生随机数
2011-03-25 14:27 2347[前言] 亂數產生器在NS2中是非常重要的, ... -
TCL 取时间、格式化时间
2011-03-25 14:03 3751clock seconds 取一个整型值 用命令可以格式化时 ... -
Visual Tcl Binary 完整版(完美中文支持)
2011-03-22 17:24 1938Visual Tcl Binary 是我为可视化开发工具 Vi ... -
windows tcl/tk安装(塔卡)
2011-03-22 17:15 3494在Windows中,最简单的方 ... -
ASED Tile for Linux/Windows 正式发布。
2011-03-22 16:42 1373ASED Tile 项目主页: http://co ... -
正式发布 Visual Tcl Binary 1.6.1 加强版
2011-03-22 16:41 1234Visual Tcl Binary 1.6.1 版 ... -
Tcl/Tk 开发者的常备编程工具
2011-03-22 16:38 2651工欲善其事,必先利其器”,选择正确的工具,可以让 Tcl/Tk ... -
Tcl/Tk 在 Windows XP 系统中的 pixmap 错误。
2011-03-22 16:36 981Tc/Tk,Ubuntu 7.04,中文缺字 在程序 ... -
Tcl/Tk Web Browser Plugin v3
2011-03-22 16:35 1068相信大家一定非常熟悉 Java Applet,许多网页的特效就 ... -
如何将 *.tcl *.tbc 文件转换为 Linux/Windows 二进制可执行文件。
2011-03-22 16:32 3219=============================== ... -
Visual Tcl Binary for Linux/Windows 完整版发布。
2011-03-22 16:27 1430Visual Tcl Binary 项目主页: http ... -
tcl 小技巧
2011-03-21 14:51 9351,expr 【expr arg ?arg ...?】可以有一 ... -
Tcl语言cmdline包
2011-03-21 14:51 1390Cmdline包主要用来处理命令行输入。 getopt ... -
Tcl语言包搜索机制
2011-03-21 14:51 1061“pkg_mkIndex”是一个Tcl命令,它用来建立包索引, ... -
Tcl语言自动加载机制
2011-03-21 14:49 1156“pkg_mkIndex”是一个Tcl ... -
tcl/tk/expect(转)
2011-03-21 14:49 969Tcl pronounced &quo ... -
Tcl编程简介(六)
2011-03-21 14:42 864lsort -mode list 排列列表。 -mode ... -
Tcl编程简介(五)
2011-03-21 14:42 1021Error命令 error message ...
相关推荐
1. **跨平台**:TCL/TK 支持多种操作系统,包括Windows、Unix/Linux、Mac OS等,使得程序具有良好的可移植性。 2. **简单易学**:TCL语法简洁,易于理解和编写,适合初学者快速上手。 3. **集成图形化**:TK提供了...
至于"TCLeditor"这个文件,它可能是用于编辑TCL脚本的文本编辑器或专用的TCL开发工具。为了更有效地编写和调试OpenSEES脚本,推荐使用支持TCL语法高亮和自动补全功能的编辑器,如Atom、Visual Studio Code等,并安装...
Tcl的命令是面向过程的,而Tk提供了一系列的控件,如按钮、文本框、菜单等,可以方便地通过Tcl脚本来配置和操作。 安装ActiveTcl后,开发者可以获得完整的Tcl解释器和Tk库,能够编写并运行Tcl/tk程序。安装过程中,...
`tclkit85.exe`可能是运行Tcl脚本的解释器,而`sdx.exe`和`sdx.kit`可能是扩展工具或库,用于增强Tcl/Tk的功能,比如动态加载插件或编译Tcl脚本为独立的可执行文件。 `makeApp.bat`和`makeApp.sh`通常用于自动化...
标题中的“tcltk-86-64.zip”表明这是一个与TCL/TK相关的压缩文件,适用于64位(x86-64)架构的计算机系统。TCL/TK是一个开源的脚本语言和图形用户界面(GUI)工具包,由John Ousterhout在1988年开发。它主要由两...
这个`tcl80.dll`文件是TCL 8.0版本的库文件,它包含了运行TCL/TK程序所必需的函数和数据结构。当一个TCL/TK程序启动时,操作系统会加载这个DLL来提供必要的功能支持。这些功能包括但不限于解析和执行TCL脚本、管理...
BEAMnrc、DOSXYZnrc和BEAMDP这些程序是核医学领域的专业软件,它们借助Tcl/Tk为用户提供了图形化的操作界面,使得非程序员也能方便地设置参数和控制程序运行,大大降低了使用的门槛。 总的来说,Tcl/Tk是一个强大而...
此外,书中还介绍了如何使用 TCL/Tk 进行网络编程、数据库访问和文件操作等高级主题。 《TCL-TK A Developer's Guide》还涵盖了 TCL/Tk 的高级主题,如多线程、事件驱动编程和图形化设计。作者通过详细的案例研究和...
“Windows下可安装Active Tcl来执行”这一点强调了跨平台性,Tcl/Tk支持多种操作系统,Active Tcl使得在非Unix-like系统上使用Tcl/Tk变得简单。 “在多台电脑上运行,输入IP地址和要发送的信息,可实现电脑间互发...
- 文件操作,如读写文件、重定向标准输入输出等。 - **History**:命令历史记录,允许用户通过上下箭头回溯之前输入的命令。 6. 正则表达式 - 支持基本和高级正则表达式模式匹配,用于文本搜索和替换。 7. 变量...
在TCL/Tk中,可以使用`entry`组件创建文本框供用户输入数据,用`button`组件触发计算操作,`label`组件显示计算结果。TCL脚本将处理这些输入,执行计算逻辑,并更新界面显示。 **压缩包文件内容** 在提供的压缩包...
- **自动化任务**:TCL/Tk常用于系统管理和脚本自动化,例如文件操作、网络通信等。 - **科学计算**:结合Tk的GUI,TCL可用于创建科学计算的可视化工具。 - **教育和教学**:由于其易于学习和强大的GUI功能,TCL/...
Tk支持多种操作系统,包括Windows、Linux和Mac OS X等。 1. **控件丰富**:Tk包含按钮、文本框、列表框、滚动条、菜单等多种GUI控件。 2. **布局管理**:Tk使用grid、pack和place三种布局管理器,帮助开发者灵活地...
本书首先介绍了Tcl的基础语法,包括变量、数据类型、流程控制结构、函数和文件操作等基本概念。这些基础知识对于理解和编写Tcl脚本至关重要。书中通过实例讲解,使读者能够快速上手,体验到Tcl语言的简洁与实用。 ...
4. **增强的文件系统操作**:提供了更多对文件和目录的操作命令,如 `file tail`(获取路径的最后一个部分)和 `file dirname`(获取路径的目录部分),使得文件操作更加便捷。 5. **Unicode 支持**:Tcl 8.0 开始...
例如,`string`命令用于处理字符串,`expr`用于执行数学表达式,`file`命令用于文件操作。 3. **TK组件**:TK提供了丰富的组件供开发者创建GUI,如按钮(`button`)、文本框(`entry`)、标签(`label`)、滚动条...
3. "TclTK.txt":这个文件可能是TCL/TK的教程、笔记或编程指南,提供了关于如何使用这两种技术的详细信息和示例。 4. "tk859-src.zip":这很可能是TK的一个特定版本(8.5.9)的源代码包,供开发者研究、编译或定制TK...
Tcl/Tk的组合为程序员提供了一种轻量级、跨平台的解决方案,可以在多种操作系统上运行,包括Windows、Linux和macOS。 **Tcl语言核心概念** 1. **命令式语言**: Tcl是一种命令式语言,其语法简洁,主要通过命令来...
其语法简洁,以命令式风格为主,支持字符串处理、文件操作、进程控制等基本功能。学习Tcl时,应掌握变量、数据类型、控制结构(如if-else、for、while)、函数定义和调用等基础知识。 2. **Tk库介绍**:Tk是与Tcl...
这个名为“Tcl.And.Tk.rar”的压缩包包含了一个名为“Tcl.And.Tk.chm”的CHM(Compiled Help Manual)文件,这通常是一个编译过的帮助文档,提供了全面的Tcl/Tk教程和参考信息。 **Tcl语言基础** 1. **语法简明**:...