【发布时间】:2020-04-13 14:40:01
【问题描述】:
我想打开一个名为filelist.txt 的文件,它只包含字符串${PATHFILE}/test.txt,读取该行并打开文件test.txt。文件test.txt 存在于文件夹~/testfile 中。
考虑这个示例代码:
#!/usr/bin/env tclsh
set PATHFILE "~/testfile"
set fp [open "filelist.txt" r]
set lines [split [read $fp] "\n"]
close $fp
foreach line $lines {
set fp1 [open $line r]
close $fp1
}
问题是“打开”命令似乎找不到PATHFILE 变量,我收到此错误:
couldn't open "${PATHFILE}/test.txt": no such file or directory
如果我尝试使用set fp1 [open "${PATHFILE}/test.txt" r] 打开文件,我没有任何错误。
【问题讨论】:
-
可能 subst 命令wiki.tcl-lang.org/page/subst 会有帮助吗?
-
谢谢你,通过使用
set fp1 [open [subst $line] r]我能够解决这个问题! -
Tcl 从不替换字符串中的任何内容,除非被告知。
-
filelist.txt中的每个文件路径是否都植根于$PATHFILE?如果是,为什么首先要在filelist.txt中维护变量引用?通过调用file join $PATHFILE $line... 并让filelist.txt仅包含test.txt\ntest2.txt\ntest3.txt等,更好地在脚本中组装完整的文件路径。