获取tcl中的文件名和时间

获取tcl中的文件名和时间,tcl,Tcl,我这里有两个问题 1) 我正在尝试打印作为输入的文件名。但它给出了一些随机值 set fileIn [open "[ pwd ]/Test - 2.csv" r] puts "File Name : [file tail $fileIn]" 输出 File Name : file1d2d0a00 我开始知道我可以使用[文件尾“[pwd]/Test-2.csv”]。但是我可以从文件中执行吗 2) 我正在尝试获取运行脚本所需的总时间。我使用以下方法。它给我的时间是毫秒。我怎么能在几分钟内拿到 s

我这里有两个问题

1) 我正在尝试打印作为输入的文件名。但它给出了一些随机值

set fileIn [open "[ pwd ]/Test - 2.csv" r]
puts "File Name : [file tail $fileIn]"
输出

File Name : file1d2d0a00
我开始知道我可以使用
[文件尾“[pwd]/Test-2.csv”]
。但是我可以从文件中执行吗

2) 我正在尝试获取运行脚本所需的总时间。我使用以下方法。它给我的时间是毫秒。我怎么能在几分钟内拿到

set start_time [clock clicks -milliseconds]
{
# my operations
}
set time_taken [expr [clock clicks -milliseconds] - $start_time]
puts $time_taken

除了使用数学运算进行转换外,是否有任何内置方法(或其他格式)以分钟为单位获取时间?

问题1:

time taken in milliseconds : 1011
time taken in seconds : 1.011
time taken in mins : 0.01685
由于您使用了
open
命令来读取文件,因此它返回的值将只是一个文件指针。i、 e.文件操作的参考。为了获得您使用的文件名,请按如下所示:

set fileName "[pwd ]/Test - 2.csv"
puts "File Name : [file tail $fileName]";
# The variable 'fileIn' is the file pointer.
# You should use the same for further file operations.
set fileIn [open $fileName r]
问题2:

time taken in milliseconds : 1011
time taken in seconds : 1.011
time taken in mins : 0.01685
要将毫秒转换为分钟,只需将结果除以60000即可

set start_time [clock clicks -milliseconds]
# Your actions here
after 1000; # I just used 'after' command to sleep for 1s 
set time_taken [expr [clock clicks -milliseconds] - $start_time]
puts "time taken in milliseconds : $time_taken"
puts "time taken in seconds : [expr {[format "%#.10g" $time_taken]/1000}]"
puts "time taken in mins : [expr {[format "%#.10g" $time_taken]/60000}]"
输出:

time taken in milliseconds : 1011
time taken in seconds : 1.011
time taken in mins : 0.01685
或者,您可以使用
[clock seconds]
以秒为单位获取时间,并将其除以60以分钟为单位获取时间。

谢谢Dinesh:)但我正在读取文件并执行一些操作,因此需要
打开该文件。开张后我有什么办法可以做吗?