반응형
파일을 원하는 위치부터 원하는 만큼만 읽고 싶을 때 쓰는 메소드입니다.

 

이렇게 읽어 들이 파일을 이용하여 원하는 지점 부터 원하는 만큼 출력할 수 있습니다.

seek( offset [, whence] )

  • offset : 파일 내의 읽기/쓰기 포인터( 커서 )의 위치입니다.
  • whence : 포인터( 커서 )이동의 기준점입니다.
    - 기본값은 0이며 생략할 수 있습니다.
    - 0(기본값)은 파일의 처음을 의미 합니다.
    - 1은 현재 파일의 포인터(커서) 위치를 의미 합니다.
    - 2는 파일의 끝을 의미합니다.

  * [ ] 대괄호 안의 whence는 생략할 수 있습니다.

 

우선 파일을 읽어 객체를 생성합니다.

# test.txt파일을 읽기 모드로 읽어서 foo에 보관합니다.
# test.txt의 내용은 '0123456789 abcdefghi'라고 가정합니다.(20바이트)
foo = open( 'test.txt' , mode='r', encoding='utf-8' )

# 만일 파일의 맨 뒤에서 읽어오려면 파일을 바이너리 모드로 읽어와야 합니다.
# 이때 인코딩은 하지 않습니다.
foo = open( 'test.txt' , mode='rb' )

 

 

import re

# 텍스트 모드로 읽을 때
# foo = open( 'test.txt', mode='r', encoding='utf-8' )

# 바이너리 모드로 읽을 때
foo = open( 'test.txt', mode='rb')
bar = foo.read()
print(bar)
# 출력 텍스트 모드: 0123456789 abcdefghi
# 출력 바이너리 모드: b'0123456789 abcdefghi'

# whence는 생략 되었기 때문에 커서는 처음부터 3글자를 이동한 후에 2글자를 읽어 들입니다.
foo.seek(3)
foobar = foo.read(2)
print(foobar) 
# 출력 텍스트 모드: 34
# 출력 바이너리 모드: b'34'

# 여기서 다시 읽으면 현재 커서의 위치가 5글자 다음에 위치 하기 때문에 그 다음 부터 읽어 들이게 됩니다.
foobar = foo.read(3)
print(foobar) 
# 출력 텍스트 모드: 567
# 출력 바이너리 모드: b'567'

# 커서를 파일 맨뒤에서 5글자 앞(왼쪽)으로 간 후에 2글자를 읽어 옵니다.
# 여기서 주의할 점은 뒤에서 부터 읽어 들이려면, 파일을 가져 올때 바이너리 모드로 가져와야 합니다. mode='rb'
foo.seek(-5, 2)
foobar = foo.read(2)
print(foobar) 
# 출력 텍스트 모드: ef
# 출력 바이너리 모드: b'ef'

 

seek() 메소드 사용법

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,