2014-07-12 98 views
-1

我正在嘗試讀取文件中的每一行,並將該行復制到新文件中。然後第二行進入第二個文件等等。我使用下面的代碼,而不是一行,我得到每個文件中的所有行。非常感謝提前將文件的每一行分割爲一個TCL文件中的新文件

set fp [open "point_dip.txt" r ] 
set file_data [read $fp] 
set lines [split $file_data "\n"] 

set ii 1 

foreach line $lines { 
    set filename "$ii.txt" 

    set fileId [open $filename "w"] 
    puts -nonewline $fileId $lines 
    close $fileId 

    set ii [expr $ii + 1] 
} 

回答

3

你犯了一個輸入錯誤。下面一行:

puts -nonewline $fileId $lines 

應該是:

puts -nonewline $fileId $line 

這就是沒有s因爲s,變量$lines包含所有行。

您也可以使用incr ii而不是set ii [expr $ii + 1],並且您應該正確地縮進行,即使它在Tcl中並不重要。這只是爲了提高可讀性。

+0

可能是在foreach循環之外打開文件$ ii.txt並關閉它也是一個好主意。 –

+0

@RomanKaganovich Err,我不認爲那會奏效。你最終會得到一個包含所有行的文件。 – Jerry

+0

哎呀!是的,我沒有注意到將每行寫入新文件的條件。抱歉,是我的錯。 –

相關問題