You are here

텍스트 화일의 몇번째 라인을 얻는 함수

안녕하세요.

제가 텍스트 화일의 몇번째 라인을 얻는 함수를 만들었습니다.

소스는 아래와 같습니다. 여기소스에 약점이 있는데요.

들어가는 매개 변수 frame이 얻고자 하는 화일내의 라인수 입니다.

소스를 보시면 알다시피, 매번 루프문을 돌려서 필요한 라인수를

찾는데요, 문제는 들어오는 frame이 커지면 돌아가야 할 루프문이

커져서 속도가 엄청 느려지네요.

루프문을 쓰지않고 필요한 라인을 읽어들어는 함수는 없는지요?

여기 저기 찾아봐도 잘 모르겠습니다. seek를 쓰면 될듯 싶은데,

라인의 길이가 일정하지 않으면 안될듯 싶은데,

고수님들의 조언 부탁드립니다.

안녕히 계세요.

proc get_line {frame} {

    set numl 0
    set handle [ open proj_force.dat r]

#get number of lines

    while {[gets $handle line] >= 0} {

        if  { $numl == $frame } {
            set first [lrange $line 0 2]
            close $handle
            return $first

        }
# increase number of line
        incr numl

}