📣 더 깊은 내용이 담긴 '프날 오토핫키 강좌 v2'의 서적판이 공개되었습니다.
가장 최신의 오토핫키를 담은 '프날 오토핫키 강좌 v2'를 책으로 만나보세요!
v2 페이지에 공개된 분량보다 더욱 깊은 내용을 처음이라도 괜찮아, 오토핫키 프로그래밍을 통해 배울 수 있습니다.
전국 온/오프라인 서점에서 만나요!
책 더 알아보기 및 구매하기
이번엔 텍스트 파일의 내용을 읽어보도록 하겠습니다.
파일을 읽는 FileRead
FileRead 명령어는 파일의 내용을 읽어와서, 출력 변수에 담아주는 명령어입니다.
FileRead, OutputVar, Filename
- OutputVar: 파일의 내용이 담길 출력 변수입니다. 이런거 많이 써봤죠?
- FileName: 읽어올 파일의 경로입니다.
스크립트와 같은 위치에 "67강.txt" 텍스트 파일을 만들고 내용을 아래처럼 작성한 후, 저장을 해주세요.
매개변수만 보고도 감이 오지 않나요? FileName 매개변수에 쓴 파일을 찾아서 그 내용을 OutputVar에 담아줍니다.
아래처럼 써서 확인해봅시다.
FileRead, var, 67강.txt
MsgBox, %var%
텍스트 파일의 내용이 변수 var에 담겼습니다.
어렵지 않죠?
너무 짧으니 하나 더 첨언해보자면, 해당 명령어를 수행 후엔 ErrorLevel 내장 변수의 값 또한 변경됩니다.
[ErrorLevel에 따른 FileRead 성공 여부]
0: 정상적으로 읽어온 상태
1: 파일이 없는 상태
2: 읽기 권한이 없거나 잠겨있는 상태
3: 메모리 부족
한 줄만 읽어주는 FileReadLine
FileRead와 다르게, 텍스트 파일의 특정 번째 줄만 읽어주는 명령어로 FileReadLine이 있습니다.
FileReadLine, OutputVar, Filename, LineNum
- OutputVar: 특정 줄의 내용이 담길 출력 변수입니다.
- FileName: 읽어올 텍스트 파일의 경로입니다.
- LineNum: 몇 번째 줄을 읽어올 지 정할 수 있습니다.
아까 작성했던 67강.txt를 가지고 예제를 만들어보겠습니다.
FileReadLine, var, 67강.txt, 1
MsgBox, %var%
텍스트 파일의 첫 줄이 변수 var에 담긴 것을 확인할 수 있습니다.
FileReadLine, var, 67강.txt, 4
MsgBox, %var%
네 번째 줄 또한 정상적으로 담깁니다.
아래처럼 응용하면 한 줄씩 전체를 읽어올 수도 있겠네요.
Loop
{
FileReadLine, var, 67강.txt, %A_index%
MsgBox, %var%
}
그런데, 실행시켜보면 문제가 있습니다. 파일의 마지막 줄이 끝난 후에도 계속 반복문이 진행됩니다. 파일의 줄이 몇 줄까지인지 모르면 반복문에 Count 매개변수를 써 줄 수도 없는데 말이지요.
그래서 FileReadLine을 반복문으로 돌릴 땐 ErrorLevel을 이용합니다.
[ErrorLevel에 따른 FileReadLine 성공 여부]
0: 성공.
1: 해당하는 줄을 읽을 수 없음.
파일의 마지막 줄보다 뒷 부분을 읽어올 수는 없으므로 ErrorLevel이 1일때 반복문을 탈출하도록 만들어주면 되겠네요.
Loop
{
FileReadLine, var, 67강.txt, %A_index%
if (ErrorLevel = 1)
break
MsgBox, %var%
}
좋습니다. 정상적으로 모든 내용을 한 줄씩 읽어온 다음에 종료되는 것을 볼 수 있습니다.
그렇지만 이렇게 Loop 안에 FileReadLine을 넣는 것은 권장하지 않습니다. 텍스트 파일의 줄 수가 많을수록 읽어오는데 오랜 시간이 걸리기 때문입니다.
제가 테스트 했을 때는 3000줄짜리 텍스트 파일을 FileReadLine으로 읽으니 3.688초가 걸리네요.
그렇기 때문에 텍스트 파일을 한 줄씩 끊어 읽을려면 다음 강에서 배울 Loop, Parse구문을 사용하는 것이 좋습니다.
테스트 해보니 이 방법을 쓰면 3.7초 나오던 것이 0.14초정도로 줄어듭니다.
< 66. FileAppend/Delete | 67. FileRead(Line) | 68. Loop, Parse >
⚠ 이 강좌는 오토핫키 v1을 다룹니다
지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.