2015-11-03 650 views
1

我在這裏有兩個問題。在tcl中獲取FileName和時間

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

問題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] 

問題2:

要轉換成毫秒分鐘,你就必須通過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分開以在幾分鐘內獲得。

+0

謝謝Dinesh :)但在這裏我正在閱讀文件,並做了一些操作,所以我需要'打開'的文件。有什麼辦法可以在開幕後做到嗎? – Crazy2crack