파일을 사용하는 전체적인 방식: 파일 열기 -> 파일 읽기/쓰기 -> 파일 닫기

 


 

1. 파일 열기

f = open(filename, mode [, encoding])

filename: 사용하고자 하는 파일 이름

mode: 사용하고자 하는 파일의 사용 목적(모드)

구분(mode) 텍스트 모드 이진 모드 방식
파일 입력 r rb 읽기(read)
파일 출력 w wb 쓰기(write)
a ab 추가(append)

* 텍스트 모드: 일반 텍스트 형태 그대로 사용하는 경우

* 이진 모드: 파일을 바이트 형태로 사용할 경우,

                   일반 텍스트 파일을 이진 모드로 열게되면 텍스트 글자를 바이트 단위로 사용할 수 있다.

 

* 인코딩 방식을 지정하는 경우(선택)

f = open("file.txt", "r", encoding="utf-8")

 

이렇게 만든 스트림을 f 객체에 넣어 이후 파일을 읽거나 쓸 때, 그리고 스트림을 다시 닫을 때 사용할 수 있도록 한다.

 

 

2. 파일 읽기/쓰기

- 파일 읽기 (mode: r)

1) 파일 내용 전부 읽기

str = f.read()

파일 내용이 전부 str 변수에 저장된다.

파일의 끝에 도달하면 빈 문자열('')을 반환한다.

 

2) 원하는 크기만 읽기

str = f.read(size)

size만큼의 내용만 str변수에 저장된다.

 

3) 파일 한 줄만 읽기

str = f.readline()

빈 문자열의 경우 대게 문자열의 끝에 붙게 되는 개행문자('\n')를 반환하고,

아예 파일의 끝에 도달한 경우 빈 문자열('')을 반환한다.

 

4) 파일의 모든 줄을 리스트로 읽기

s = list(f) # 또는
s = f.readlines()

 

파일의 모든 내용이 줄 단위로 리스트에 저장된다.

 

- 파일 쓰기 (mode: w)

f.write(value)

value 내용이 파일 안에 저장된다. (덮어쓰기 방식으로 저장.)

 

- 파일 쓰기 (mode: a)

f.write(value)

value 내용이 파일 안에 저장된다. (파일 안에 원래 다른 내용이 있었으면 그 내용 뒤에 덧붙여짐.)

 

- 파일 객체 위치 반환

f.tell()

파일 객체 위치를 반환한다.

f가 이진 모드로 열린 경우에는 바이트 수를 반환하고, 텍스트 모드로 열린 경우에는 글자수를 반환한다.

seek함수에의해 위치가 변경된 경우 변경된 위치를 반환한다.

 

- 파일 객체 위치 변경

f.seek(offset, whence) # whence: 0, 1, 2

기준점 whence에 offset을 더한 위치로 커서를 이동한다고 생각하면 된다.

그 위치로 이동시킨 후 원하는 읽기 또는 쓰기 작업을 실행하면 그 위치에서부터 읽거나 쓸 수 있다.

whence가 0이면 파일의 시작위치, 1이면 현재 위치, 2이면 파일의 끝이 기준점이 된다.

whence를 입력하지 않으면 기본으로 0에다가 offset을 더하는 것이 된다.

 

 

3. 파일 닫기

f.close()

동적할당에서 사용한 메모리를 꼭 free 시켜주는 것과 같이 파일 스트림 작업에서도 작업 후 꼭 close 시켜주도록 해야 한다.

 

 

 

+ Recent posts