在 tcl 中获取文件名和时间
Getting FileName and time taken in tcl
我有两个问题。
1) 我正在尝试打印我作为输入提供的文件名。但它给出了一些随机值。
set fileIn [open "[ pwd ]/Test - 2.csv" r]
puts "File Name : [file tail $fileIn]"
输出
File Name : file1d2d0a00
我开始知道我可以使用 [file tail "[ pwd ]/Test - 2.csv"]
。但是我可以从 fileIn 做吗?
2) 我正在尝试获取 运行 脚本所花费的总时间。我正在使用以下方法。它以毫秒为单位给我。我怎样才能在几分钟内得到它?
set start_time [clock clicks -milliseconds]
{
# my operations
}
set time_taken [expr [clock clicks -milliseconds] - $start_time]
puts $time_taken
除了用数学运算转换外,有没有什么inbuild方法(或其他格式)可以得到分钟的时间?
问题 1:
由于您使用open
命令读取文件,它返回的值将只是一个文件指针。即文件操作的参考。为了获得您使用的文件名,
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]
问题二:
要将毫秒转换为分钟,只需将结果除以 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 得到以分钟为单位的时间。
我有两个问题。
1) 我正在尝试打印我作为输入提供的文件名。但它给出了一些随机值。
set fileIn [open "[ pwd ]/Test - 2.csv" r]
puts "File Name : [file tail $fileIn]"
输出
File Name : file1d2d0a00
我开始知道我可以使用 [file tail "[ pwd ]/Test - 2.csv"]
。但是我可以从 fileIn 做吗?
2) 我正在尝试获取 运行 脚本所花费的总时间。我正在使用以下方法。它以毫秒为单位给我。我怎样才能在几分钟内得到它?
set start_time [clock clicks -milliseconds]
{
# my operations
}
set time_taken [expr [clock clicks -milliseconds] - $start_time]
puts $time_taken
除了用数学运算转换外,有没有什么inbuild方法(或其他格式)可以得到分钟的时间?
问题 1:
由于您使用open
命令读取文件,它返回的值将只是一个文件指针。即文件操作的参考。为了获得您使用的文件名,
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]
问题二:
要将毫秒转换为分钟,只需将结果除以 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 得到以分钟为单位的时间。