2016-04-01 5 views
0

У меня есть код, который я хочу использовать, чтобы открыть файл журнала, извлечь содержимое и сохранить его в переменной, чтобы я мог извлечь данные из этой переменной в будущем. Как мне это сделать? Пока код сохраняет только последние данные файла журнала в переменной. Я думаю, что цикл while захватывает данные по строкам, и переменная хранит его по одному и перезаписывает предыдущие данные по мере их продвижения, как мне изменить код, чтобы он сохранял все данные по мере продвижения кода?Сохраните все данные в переменной tcl

set fp [open "filename.log" r] 
while { [gets $fp data] >= 0 } { 
    set written $data 
} 
close $fp 
puts $written 

пожалуйста, помогите

+0

Какие структуры данных вы хотите использовать для хранения данных? В списке с одной строкой на элемент? Нужно ли разделять каждую строку на отдельные поля? Пожалуйста, подумайте о ваших требованиях и обновите свой вопрос. –

ответ

1

Вы можете сделать это с помощью append команды:

set written "" 
set fp [open "filename.log" r] 
while { [gets $fp data] >= 0 } { 
    # append last data read 
    append written $data 
    # add some line feed for readability (may not be necessary) 
    append written "\n" 
} 
close $fp 
puts $written 
4

Вы могли бы также использовать read вместо использования while и gets:

set fp [open "filename.log" r] 
set written [read $fp] 
close $fp 
puts $written 
1

После хорошего ответ @purplepsycho a й @Jerry, Вы можете использовать fileutil::cat функцию, которая даже не требует, чтобы open и close дескриптор файла и синтаксис является,

package require fileutil 
set var [fileutil::cat "filename.log"] 
puts $var 
Смежные вопросы