파이썬의 '파일 입출력'은 표준 C 입출력 라이브러리를 모델로 만들어졌습니다. 먼저 파일을 오픈하는 인터페이스입니다.

fileobj = open(filename, mode)

 

2번째 인자인 'mode'에 올 수 있는 값은 다음과 같습니다.

  • r: 파일 읽기
  • w: 파일 쓰기(파일이 존재하지 않으면 생성, 존재하면 덮어씀)
  • x: 파일 쓰기(파일이 존재하지 않을 경우에만 수행함)
  • a: 파일 추가하기(파일이 존재하면 파일의 끝에서부터 쓴다.)

 

쓰기


파일 쓰기를 위한 인터페이스는 다음과 같습니다.

fout = open('myfile', 'wt')
fout.write(data)

 

 

 

읽기


파일 읽기를 위한 인터페이스는 다음과 같습니다.

fin = open('myfile', 'rt')
obj = fin.read()  # 매개변수 없이 read() 함수를 호출하면 파일의 전체 데이터를 읽어들입니다.
fin.close()

 

readline() 함수를 사용하여 파일을 라인 단위로 읽을 수도 있습니다.

data = ''
fin = open('myfile', 'rt')
while True:
    line = fin.readline()
    if not line:
        break
    data += line
    
fin.close()

 

위의 예제들에서 마지막 라인에 close()를 호출하여 스트림을 닫았는데, 파이썬은 자동으로 닫히는 '컨텍스트 매니저(context manager)'를 지원합니다.

with open('myfile', 'wt') ad fout:
    fout.write(data)

 

 

 

파일 오프셋 조작/확인: seek(), tell()


파일 오프셋을 조작하여 원하는 위치의 데이터를 읽기/쓰기 할 수 있습니다.

with open('myfile', 'rb') as fin:
    fin.seek(10, SEEK_SET)  # 처음 오프셋 위치를 기준으로 +10을 더한 위치로 이동합니다.
    data = fin.read()