2014-01-28 116 views
0

我在桌面上有一個文件test.txt,我想通過代碼訪問它,並閱讀代碼我已經嘗試下面提到的代碼,但得到相同的錯誤無法打開文件沒有這樣的文件或目錄存在。請看看我的代碼:無法通過tcl代碼訪問文件

set filename {C:\Users\E505135\Desktop\test.txt} 
set fp [open $filename r] 
set file_data [read $fp] 
close $fp 
set data [split $file_data ","] 
foreach line $data { 
puts "$line"; 
} 

FYI我曾經嘗試都正斜槓和反斜槓代碼仍然得到同樣的錯誤。

+0

我在一個Windows系統,我同樣有一個用戶名由一個字母后跟6個數字組成,但我有*沒問題*運行以下內容:'set filename {C:\ Users \ c829454 \ Desktop \ test 。文本};設置fp [打開$ filename r];關閉$ fp' –

+0

使用正斜槓或反斜槓我沒有遇到任何問題。你確定你有正確的道路嗎?該腳本與該文件位於同一目錄中嗎?你可以嘗試命令'set cdir [pwd];設置文件名「$ cdir/text.txt」'('pwd'以字符串形式返回腳本的當前路徑)。 – Jerry

+0

從命令提示符下,嘗試輸入C:\ Users \ E505135 \ Desktop \ test.txt',然後看到什麼?文件真的在那裏嗎? –

回答

0

你的代碼沒有什麼明顯的錯誤;它看起來非常好。唯一真正的可能性是該文件並不是真的在你認爲的位置。不幸的是,這是quite possible on Windows(並且我不在Windows的部署中實際發生這種情況,所以我無法測試我的理論)。

最簡單的方法可能是使用Tk的tk_getOpenFile來提供文件名來處理而不是硬編碼它。

0

如果您在Windows上通過cygwin使用tclsh,您的路徑將爲/cygdrive/c/Users/E505135/Desktop/test.txt(區分大小寫)。

我在Windows 7下的草莓和Fedora 18(帶路徑修改)中嘗試了您的代碼(僅複製並粘貼)。兩者都運行良好。