.tcl文件_tcl/tk学习笔记(七)· 文件

v2-366b68ef10ef63157ada76555785d4f0_1440w.jpg?source=172ae18b

上回说到读写操作,读写过程势必要跟文件目录产生联系,所以这一篇整理一下跟文件相关的几个命令,有个pwd命令可以查看当前工作目录是什么,估计大家都知道,我在这篇只整理了file和glob。

一、file

file对文件名和属性进行操作,完整内容请看如下链接:

https://www.tcl.tk/man/tcl/TclCmd/file.htm#M10

基本语法为

file option name ?arg arg ...?

由option来决定具体操作是什么。有很多小分支,整理一些常见的。

  1. file mkdir NewdirName #在当前工作目录下新建文件夹名为NewdirNam

2. file dirname name #返回name所在的路径,通常就是完整路径去掉最后一部分的内容

例子:

file dirname 

注意几点

  • 当文件名里有空格,如Program Files,务必要用大括号将整个路径包裹起来,不然会认为有两个字符串而报错。
  • 路径中使用斜杠。
  • 如果路径中只有一个文件夹了,就返回该文件夹。

3. file exists name#文件名存在返回1

file isdirecotry name #如果是个路径,返回1

file isfile name #如果是个文件,返回1

4. file extension name #返回扩展名

返回整个名字里最后一个圆点后的扩展名,圆点也一同返回。如果没有找到圆点,那就返回空字符。

file rootname name

返回name中除了最后一个圆点后内容的所有字符,即不包括扩展名的文件名。

file extension 

5. file tail name

返回name中最后一部分文件或文件夹名,即不包括路径名的文件名。

file tail 

6. file split name

file join name ?name ...?

这两个就是相对应的:

file split 

返回值为路径的每个部分,之间用空格隔开:C:/ {Program Files} 7-Zip Lang hu.txt

file join C:

返回值为C:/Program Files/7-Zip/Lang/hu.txt,将各部分组成一个可用的完整路径格式。

我通常会用在读写文件时候使用这一部分命令,比如说给新建的文件名加特定的前缀后缀之类的。

二、glob

glob ?switches? ?pattern ...?

功能为返回符合pattern条件的文件名,排序随机,要是需要排序,请使用lsort命令对列表进行操作。

同样,它包括几个switches,可搭配使用。(题外话:国庆假期买了switch,开心到飞起!)

-nocomplain 使用这个选项,无符合条件的结果时可以返回空列表,不会报错;如果没有这个选项,上述情况出现时就会报错了。

-directory directory 使用这个选项,将在指定的directory 里寻找;没有指定这个目录,就是在当前工作目录下找。

glob 

至于pattern,其实除了*还有很多其他情况,像问号?、中括号[]、反斜杠,但我目前星号够用,不展开讲其他的,以后等我捋明白了正则表达式再详细介绍吧。

十一月份也要加油啊!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cc -o ../../bin/lsqfit main.o lsqfit_ls.o block_init.o line.o -L../../lib -ldblock -ldutil /home/ubuntu/software/tcl/tcl8.5.11/lib/libtcl8.5.so -lm -lc /usr/bin/ld: main.o: in function `main': main.c:(.text+0x239): undefined reference to `blk_open_file' /usr/bin/ld: main.c:(.text+0x499): undefined reference to `blk_open_file' /usr/bin/ld: main.c:(.text+0x5e3): undefined reference to `blk_open_file' /usr/bin/ld: main.c:(.text+0x8f9): undefined reference to `blk_open_file' /usr/bin/ld: ../../lib/libdblock.a(skip.o): in function `blk__skip': skip.c:(.text+0xed): undefined reference to `blk__getlines' /usr/bin/ld: skip.c:(.text+0x126): undefined reference to `blk__getlines' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk_init_read': read.c:(.text+0x15): undefined reference to `blk__getenv' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk_read_blk': read.c:(.text+0x6a): undefined reference to `blk__getenv' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk_read_data': read.c:(.text+0xad): undefined reference to `blk__getenv' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk__read_data': read.c:(.text+0x119): undefined reference to `blk__getlines' /usr/bin/ld: read.c:(.text+0x1b2): undefined reference to `blk__getlines' /usr/bin/ld: read.c:(.text+0x1e5): undefined reference to `blk__getlines' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk_read_check': read.c:(.text+0x398): undefined reference to `blk__getenv' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk_read_blk_check': read.c:(.text+0x3d6): undefined reference to `blk__getenv' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk__read_check': read.c:(.text+0x49b): undefined reference to `blk__getlines' /usr/bin/ld: read.c:(.text+0x788): undefined reference to `blk__getlines' /usr/bin/ld: ../../lib/libdblock.a(read.o): in function `blk_print_env': read.c:(.text+0xbdf): undefined reference to `blk__getenv' /usr/bin/ld: ../../lib/libdblock.a(variables.o
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值